X-Git-Url: https://git.llucax.com/software/libev.git/blobdiff_plain/fbe9562600fa8735c078401aa604b49a5426b0e2..0f411518435b7edf24d4bddcc86e5958f7e3d23f:/ev.c diff --git a/ev.c b/ev.c index 5756bb7..255bb84 100644 --- a/ev.c +++ b/ev.c @@ -234,6 +234,9 @@ ev_now (EV_P) cur = newcnt; \ } +#define array_free(stem, idx) \ + free (stem ## s idx); stem ## cnt idx = stem ## max idx = 0; + /*****************************************************************************/ static void @@ -308,11 +311,8 @@ fd_reify (EV_P) anfd->reify = 0; - if (anfd->events != events) - { - method_modify (EV_A_ fd, anfd->events, events); - anfd->events = events; - } + method_modify (EV_A_ fd, anfd->events, events); + anfd->events = events; } fdchangecnt = 0; @@ -639,6 +639,8 @@ loop_init (EV_P_ int methods) void loop_destroy (EV_P) { + int i; + #if EV_USE_WIN32 if (method == EVMETHOD_WIN32 ) win32_destroy (EV_A); #endif @@ -655,6 +657,16 @@ loop_destroy (EV_P) if (method == EVMETHOD_SELECT) select_destroy (EV_A); #endif + for (i = NUMPRI; i--; ) + array_free (pending, [i]); + + array_free (fdchange, ); + array_free (timer, ); + array_free (periodic, ); + array_free (idle, ); + array_free (prepare, ); + array_free (check, ); + method = 0; /*TODO*/ } @@ -798,8 +810,7 @@ call_pending (EV_P) if (p->w) { p->w->pending = 0; - - (*(void (**)(EV_P_ W, int))&p->w->cb) (EV_A_ p->w, p->events); + p->w->cb (EV_A_ p->w, p->events); } } }