diff options
| author | Paul Eggert | 2011-08-04 19:15:35 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-08-04 19:15:35 -0700 |
| commit | 0065d05491ce5981ea20896bb26d21dcd31e6769 (patch) | |
| tree | 13240167319d4a99ab5eacae4a883258eb2d28de /src/xgselect.c | |
| parent | 18ab493650d648ab8dca651ea2698861f926e895 (diff) | |
| download | emacs-0065d05491ce5981ea20896bb26d21dcd31e6769.tar.gz emacs-0065d05491ce5981ea20896bb26d21dcd31e6769.zip | |
Adjust in response to jan.h.d's comments.
See, for example <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9196#26>.
Diffstat (limited to 'src/xgselect.c')
| -rw-r--r-- | src/xgselect.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/src/xgselect.c b/src/xgselect.c index d1844610077..339ec475117 100644 --- a/src/xgselect.c +++ b/src/xgselect.c | |||
| @@ -29,7 +29,7 @@ along with GNU Emacs. If not, see <http§://www.gnu.org/licenses/>. */ | |||
| 29 | #include <setjmp.h> | 29 | #include <setjmp.h> |
| 30 | 30 | ||
| 31 | static GPollFD *gfds; | 31 | static GPollFD *gfds; |
| 32 | static int gfds_size; | 32 | static ptrdiff_t gfds_size; |
| 33 | 33 | ||
| 34 | int | 34 | int |
| 35 | xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, | 35 | xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, |
| @@ -54,16 +54,9 @@ xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, | |||
| 54 | do { | 54 | do { |
| 55 | if (n_gfds > gfds_size) | 55 | if (n_gfds > gfds_size) |
| 56 | { | 56 | { |
| 57 | int gfds_size_max = | ||
| 58 | min (INT_MAX, min (PTRDIFF_MAX, SIZE_MAX) / sizeof *gfds); | ||
| 59 | int size; | ||
| 60 | if (gfds_size_max / 2 < n_gfds) | ||
| 61 | memory_full (SIZE_MAX); | ||
| 62 | size = 2 * n_gfds; | ||
| 63 | gfds_size = 0; | ||
| 64 | xfree (gfds); | 57 | xfree (gfds); |
| 65 | gfds = xmalloc (sizeof *gfds * size); | 58 | gfds = xpalloc (0, &gfds_size, n_gfds - gfds_size, INT_MAX, |
| 66 | gfds_size = size; | 59 | sizeof *gfds); |
| 67 | } | 60 | } |
| 68 | 61 | ||
| 69 | n_gfds = g_main_context_query (context, | 62 | n_gfds = g_main_context_query (context, |