diff options
Diffstat (limited to 'doc/nx-X11_vs_XOrg69_patches/nx-X11_lib_Xau_AuRead.c.X.original')
-rw-r--r-- | doc/nx-X11_vs_XOrg69_patches/nx-X11_lib_Xau_AuRead.c.X.original | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/doc/nx-X11_vs_XOrg69_patches/nx-X11_lib_Xau_AuRead.c.X.original b/doc/nx-X11_vs_XOrg69_patches/nx-X11_lib_Xau_AuRead.c.X.original deleted file mode 100644 index 940a3fee4..000000000 --- a/doc/nx-X11_vs_XOrg69_patches/nx-X11_lib_Xau_AuRead.c.X.original +++ /dev/null @@ -1,62 +0,0 @@ ---- ./nx-X11/lib/Xau/AuRead.c.X.original 2015-02-13 14:03:44.624443872 +0100 -+++ ./nx-X11/lib/Xau/AuRead.c 2015-02-10 19:13:12.488735202 +0100 -@@ -32,14 +32,29 @@ - #endif - #include <X11/Xauth.h> - #include <stdlib.h> -+#include <errno.h> - - static int - read_short (unsigned short *shortp, FILE *file) - { - unsigned char file_short[2]; - -- if (fread ((char *) file_short, (int) sizeof (file_short), 1, file) != 1) -- return 0; -+ /* -+ * Added a check on EINTR to prevent the fread() call to be -+ * interrupted by any signal not blocked by OsBlockSignals(). -+ */ -+ -+ for (;;) { -+ if (fread ((char *) file_short, (int) sizeof (file_short), 1, file) != 1) { -+ if (errno == EINTR && ferror (file)) { -+ perror ("Reading from auth file"); -+ clearerr (file); -+ continue; -+ } -+ return 0; -+ } -+ break; -+ } - *shortp = file_short[0] * 256 + file_short[1]; - return 1; - } -@@ -58,11 +73,22 @@ - data = malloc ((unsigned) len); - if (!data) - return 0; -- if (fread (data, (int) sizeof (char), (int) len, file) != len) { -- bzero (data, len); -- free (data); -- return 0; -- } -+ for (;;) -+ { -+ if (fread (data, (int) sizeof (char), (int) len, file) != len) -+ { -+ if (errno == EINTR && ferror (file)) -+ { -+ perror ("Reading from auth file"); -+ clearerr (file); -+ continue; -+ } -+ bzero (data, len); -+ free (data); -+ return 0; -+ } -+ break; -+ } - } - *stringp = data; - *countp = len; |