]> git.eshelyaron.com Git - emacs.git/commitdiff
* xgselect.c (xg_select): Don't assume n_gfds is nonnegative
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 9 Nov 2014 04:19:54 +0000 (20:19 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 9 Nov 2014 04:19:54 +0000 (20:19 -0800)
merely because tmo_in_millisec is nonnegative.  The 1st call
to g_main_context_query could succeed while the 2nd one fails.

src/ChangeLog
src/xgselect.c

index d5814a65edf4a4bd862b24050f5e6f311ee4ac6f..2ef9c6ba9aa45f0f8f73b27acc3e7b13b5508a30 100644 (file)
@@ -1,5 +1,9 @@
 2014-11-09  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * xgselect.c (xg_select): Don't assume n_gfds is nonnegative
+       merely because tmo_in_millisec is nonnegative.  The 1st call
+       to g_main_context_query could succeed while the 2nd one fails.
+
        * frame.c (Fcan_run_window_configuration_change_hook): Return a value.
 
 2014-11-08  Jan Djärv  <jan.h.d@swipnet.se>
index 4e2d1c8db69a5dcc563ef8d2cf1258c4b7752d5f..7e883eb53c64268ec1f741f47a433ff5c559e86b 100644 (file)
@@ -56,7 +56,7 @@ xg_select (int fds_lim, fd_set *rfds, fd_set *wfds, fd_set *efds,
   int gfds_size = ARRAYELTS (gfds_buf);
   int n_gfds, retval = 0, our_fds = 0, max_fds = fds_lim - 1;
   bool context_acquired = false;
-  int i, nfds, tmo_in_millisec = -1;
+  int i, nfds, tmo_in_millisec;
   bool need_to_dispatch;
   USE_SAFE_ALLOCA;
 
@@ -102,7 +102,7 @@ xg_select (int fds_lim, fd_set *rfds, fd_set *wfds, fd_set *efds,
 
   SAFE_FREE ();
 
-  if (tmo_in_millisec >= 0)
+  if (n_gfds >= 0 && tmo_in_millisec >= 0)
     {
       tmo = make_timespec (tmo_in_millisec / 1000,
                           1000 * 1000 * (tmo_in_millisec % 1000));