aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2014-11-08 20:19:54 -0800
committerPaul Eggert2014-11-08 20:19:54 -0800
commitf86269414156e4d91458f2c70a0f022b92caa6ba (patch)
tree084576986c64b150b9f38760b4fd4732ab80fe41 /src
parent0cd3403ff470aa5a45d526f677659bd16a05caed (diff)
downloademacs-f86269414156e4d91458f2c70a0f022b92caa6ba.tar.gz
emacs-f86269414156e4d91458f2c70a0f022b92caa6ba.zip
* 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.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog4
-rw-r--r--src/xgselect.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index d5814a65edf..2ef9c6ba9aa 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,9 @@
12014-11-09 Paul Eggert <eggert@cs.ucla.edu> 12014-11-09 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 * xgselect.c (xg_select): Don't assume n_gfds is nonnegative
4 merely because tmo_in_millisec is nonnegative. The 1st call
5 to g_main_context_query could succeed while the 2nd one fails.
6
3 * frame.c (Fcan_run_window_configuration_change_hook): Return a value. 7 * frame.c (Fcan_run_window_configuration_change_hook): Return a value.
4 8
52014-11-08 Jan Djärv <jan.h.d@swipnet.se> 92014-11-08 Jan Djärv <jan.h.d@swipnet.se>
diff --git a/src/xgselect.c b/src/xgselect.c
index 4e2d1c8db69..7e883eb53c6 100644
--- a/src/xgselect.c
+++ b/src/xgselect.c
@@ -56,7 +56,7 @@ xg_select (int fds_lim, fd_set *rfds, fd_set *wfds, fd_set *efds,
56 int gfds_size = ARRAYELTS (gfds_buf); 56 int gfds_size = ARRAYELTS (gfds_buf);
57 int n_gfds, retval = 0, our_fds = 0, max_fds = fds_lim - 1; 57 int n_gfds, retval = 0, our_fds = 0, max_fds = fds_lim - 1;
58 bool context_acquired = false; 58 bool context_acquired = false;
59 int i, nfds, tmo_in_millisec = -1; 59 int i, nfds, tmo_in_millisec;
60 bool need_to_dispatch; 60 bool need_to_dispatch;
61 USE_SAFE_ALLOCA; 61 USE_SAFE_ALLOCA;
62 62
@@ -102,7 +102,7 @@ xg_select (int fds_lim, fd_set *rfds, fd_set *wfds, fd_set *efds,
102 102
103 SAFE_FREE (); 103 SAFE_FREE ();
104 104
105 if (tmo_in_millisec >= 0) 105 if (n_gfds >= 0 && tmo_in_millisec >= 0)
106 { 106 {
107 tmo = make_timespec (tmo_in_millisec / 1000, 107 tmo = make_timespec (tmo_in_millisec / 1000,
108 1000 * 1000 * (tmo_in_millisec % 1000)); 108 1000 * 1000 * (tmo_in_millisec % 1000));