--- src/gplt_x11.c.orig 2015-01-21 20:03:55.735504922 +0100 +++ src/gplt_x11.c 2015-01-21 20:04:14.327506641 +0100 @@ -951,6 +951,8 @@ nfds = cn + 1; while (1) { + int ipc; + XFlush(dpy); /* see above */ FD_ZERO(&tset); @@ -988,7 +990,11 @@ 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); @@ -1216,8 +1222,8 @@ 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;