eh, make ’em volatile, this is not time-critical code anyway
authormirabilos <t.glaser@tarent.de>
Tue, 30 Jul 2019 14:30:56 +0000 (16:30 +0200)
committermirabilos <mirabilos@evolvis.org>
Tue, 30 Jul 2019 14:30:56 +0000 (16:30 +0200)
but rather too complex to refactor

Build.sh
draw.c

index af97b34..76886ff 100644 (file)
--- a/Build.sh
+++ b/Build.sh
@@ -1142,8 +1142,6 @@ if test 1 = $i; then
        ac_flags 1 woldstyledefn -Wold-style-definition
        ac_flags 1 wmissingdecl -Wmissing-declarations
        ac_flags 1 wmissingproto -Wmissing-prototypes
-       # see comment in draw.c:epstoimage()
-       ac_flags 1 wnoclobbered -Wno-clobbered
 fi
 
 phase=x
diff --git a/draw.c b/draw.c
index aa5bc46..730e683 100644 (file)
--- a/draw.c
+++ b/draw.c
@@ -87,7 +87,8 @@ static Window search_child_window(void);
 static Window tsearch_child_window(const char *name);
 static Window getNamedWindow(const char *name, Window top);
 static void reparent_child_window(Window, int, int);
-static char *epstoimage(const char *, int, int, int, int, int, int);
+static char *epstoimage(const char *, int, int, int, int,
+    volatile int, volatile int);
 static void image_setcolor(struct render_state *);
 static void x_registerseed(struct render_state *, char *, const char *);
 static const char *x_findseed(struct render_state *, const char *);
@@ -3417,20 +3418,15 @@ draw_reinit(struct render_state *state)
        x_registerseed(state, NULL, NULL);
 }
 
-/*
- *XXX TODO: fd, xzoom, yzoom might be clobbered by vfork
- *
- * perhaps move relevant code out into another function?
- */
 static char *
 epstoimage(const char *epsfile, int x, int y,
-    int width, int height, int xzoom, int yzoom)
+    int width, int height, volatile int xzoom, volatile int yzoom)
 {
-       int fd, pfd[3][2];
-       int i, j;
+       volatile int fd;
+       volatile pid_t pid = 0;
+       int i, j, status, pfd[3][2];
        FILE *fp;
-       int status;
-       pid_t pid = 0, gspid;
+       pid_t gspid;
        char *cp;
        int scale = 1;
        struct stat stbuf;