--- src/gplt_x11.c +++ src/gplt_x11.c 2009-06-15 13:17:19.021900688 +0200 @@ -901,6 +901,8 @@ mainloop() nfds = cn + 1; while (1) { + int ipc; + XFlush(dpy); /* see above */ FD_ZERO(&tset); @@ -938,7 +940,11 @@ mainloop() process_event(&xe); } } - if ((X11_ipc = fopen(X11_ipcpath, "r"))) { + + if ((ipc = open(X11_ipcpath, O_RDONLY|O_CREAT|O_CLOEXEC|O_EXCL)) < 0) + break; + + if ((X11_ipc = dfopen(ipc, "r"))) { unlink(X11_ipcpath); record(); fclose(X11_ipc); @@ -1176,8 +1182,8 @@ static int read_input __PROTO((void)); static int read_input() { - static int rdbuf_size = 10 * Nbuf; - static char rdbuf[10 * Nbuf]; + const int rdbuf_size = 10 * Nbuf; + static char rdbuf[rdbuf_size+1]; static int total_chars; static int rdbuf_offset; static int buf_offset;