diff options
Diffstat (limited to 'src/lib/eventloop.c')
-rw-r--r-- | src/lib/eventloop.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/lib/eventloop.c b/src/lib/eventloop.c index fb0928bd..d117cbd2 100644 --- a/src/lib/eventloop.c +++ b/src/lib/eventloop.c | |||
@@ -516,10 +516,19 @@ gnunet_gtk_select (void *cls, | |||
516 | #endif | 516 | #endif |
517 | 517 | ||
518 | g_main_context_prepare (ml->gmc, &ml->max_priority); | 518 | g_main_context_prepare (ml->gmc, &ml->max_priority); |
519 | while (ml->cached_poll_array_size < (need_gfds = g_main_context_query (ml->gmc, | 519 | need_gfds = GUINT_MAX; |
520 | ml->max_priority, &delay, &ml->cached_poll_array[fd_counter], ml->cached_poll_array_size - fd_counter))) | 520 | while (1) |
521 | resize_cached_poll_array (ml, | 521 | { |
522 | ml->cached_poll_array_size - fd_counter + need_gfds); | 522 | need_gfds = g_main_context_query (ml->gmc, |
523 | ml->max_priority, | ||
524 | &delay, | ||
525 | &ml->cached_poll_array[fd_counter], | ||
526 | ml->cached_poll_array_size - fd_counter); | ||
527 | if (ml->cached_poll_array_size < need_gfds + fd_counter) | ||
528 | break; | ||
529 | resize_cached_poll_array (ml, | ||
530 | fd_counter + need_gfds); | ||
531 | } | ||
523 | 532 | ||
524 | ml->poll_array_active = fd_counter + need_gfds; | 533 | ml->poll_array_active = fd_counter + need_gfds; |
525 | 534 | ||