diff options
| author | Paul Eggert | 2014-11-08 20:19:54 -0800 |
|---|---|---|
| committer | Paul Eggert | 2014-11-08 20:19:54 -0800 |
| commit | f86269414156e4d91458f2c70a0f022b92caa6ba (patch) | |
| tree | 084576986c64b150b9f38760b4fd4732ab80fe41 /src | |
| parent | 0cd3403ff470aa5a45d526f677659bd16a05caed (diff) | |
| download | emacs-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/ChangeLog | 4 | ||||
| -rw-r--r-- | src/xgselect.c | 4 |
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 @@ | |||
| 1 | 2014-11-09 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2014-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 | ||
| 5 | 2014-11-08 Jan Djärv <jan.h.d@swipnet.se> | 9 | 2014-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)); |