--- src/gplt_x11.c +++ src/gplt_x11.c 2010-04-06 15:49:17.446925544 +0000 @@ -912,6 +912,8 @@ mainloop() nfds = cn + 1; while (1) { + int ipc; + XFlush(dpy); /* see above */ FD_ZERO(&tset); @@ -949,7 +951,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); @@ -1172,8 +1178,8 @@ static int read_input __PROTO((void)); static int read_input() { - static int rdbuf_size = 10 * X11_COMMAND_BUFFER_LENGTH; - static char rdbuf[10 * X11_COMMAND_BUFFER_LENGTH]; + const int rdbuf_size = 10 * X11_COMMAND_BUFFER_LENGTH; + static char rdbuf[(10 * X11_COMMAND_BUFFER_LENGTH)+1]; static int total_chars; static int rdbuf_offset; static int buf_offset;