diff --git a/Changes b/Changes index bf107e7..3eb5316 100644 --- a/Changes +++ b/Changes @@ -37,6 +37,7 @@ TODO: ev_feed_child_event works in all cases (unlike read/write/send/recv...). - try to detect signals around a fork faster (test program by Denis Bilenko). + - work around recent glibc versions that leak memory in realloc. 4.11 Sat Feb 4 19:52:39 CET 2012 - INCOMPATIBLE CHANGE: ev_timer_again now clears the pending status, as diff --git a/ev.c b/ev.c index 317dd8e..09adac9 100644 --- a/ev.c +++ b/ev.c @@ -1193,12 +1193,11 @@ ev_syserr (const char *msg) static void * ev_realloc_emul (void *ptr, long size) EV_THROW { -#if __GLIBC__ - return realloc (ptr, size); -#else /* some systems, notably openbsd and darwin, fail to properly * implement realloc (x, 0) (as required by both ansi c-89 and * the single unix specification, so work around them here. + * recently, also (at least) fedora and debian started breaking it, + * despite documenting it otherwise. */ if (size) @@ -1206,7 +1205,6 @@ ev_realloc_emul (void *ptr, long size) EV_THROW free (ptr); return 0; -#endif } static void *(*alloc)(void *ptr, long size) EV_THROW = ev_realloc_emul;