diff --git a/ev.3 b/ev.3
index 9aefdff..9313383 100644
--- a/ev.3
+++ b/ev.3
@@ -307,13 +307,14 @@ might be supported on the current system, you would need to look at
recommended ones.
.Sp
See the description of \f(CW\*(C`ev_embed\*(C'\fR watchers for more info.
-.IP "ev_set_allocator (void *(*cb)(void *ptr, size_t size))" 4
-.IX Item "ev_set_allocator (void *(*cb)(void *ptr, size_t size))"
-Sets the allocation function to use (the prototype and semantics are
-identical to the realloc C function). It is used to allocate and free
-memory (no surprises here). If it returns zero when memory needs to be
-allocated, the library might abort or take some potentially destructive
-action. The default is your system realloc function.
+.IP "ev_set_allocator (void *(*cb)(void *ptr, long size))" 4
+.IX Item "ev_set_allocator (void *(*cb)(void *ptr, long size))"
+Sets the allocation function to use (the prototype is similar \- the
+semantics is identical \- to the realloc C function). It is used to
+allocate and free memory (no surprises here). If it returns zero when
+memory needs to be allocated, the library might abort or take some
+potentially destructive action. The default is your system realloc
+function.
.Sp
You could override this function in high-availability programs to, say,
free some memory if it cannot allocate memory, to use a special allocator,
diff --git a/ev.c b/ev.c
index f8b08f5..5383e2c 100644
--- a/ev.c
+++ b/ev.c
@@ -283,22 +283,22 @@ syserr (const char *msg)
}
}
-static void *(*alloc)(void *ptr, size_t size) = realloc;
+static void *(*alloc)(void *ptr, long size);
void
-ev_set_allocator (void *(*cb)(void *ptr, size_t size))
+ev_set_allocator (void *(*cb)(void *ptr, long size))
{
alloc = cb;
}
inline_speed void *
-ev_realloc (void *ptr, size_t size)
+ev_realloc (void *ptr, long size)
{
- ptr = alloc (ptr, size);
+ ptr = alloc ? alloc (ptr, size) : realloc (ptr, size);
if (!ptr && size)
{
- fprintf (stderr, "libev: cannot allocate %ld bytes, aborting.", (long)size);
+ fprintf (stderr, "libev: cannot allocate %ld bytes, aborting.", size);
abort ();
}
@@ -326,12 +326,12 @@ typedef struct
int events;
} ANPENDING;
+#if EV_USE_INOTIFY
typedef struct
{
-#if EV_USE_INOTIFY
WL head;
-#endif
} ANFS;
+#endif
#if EV_MULTIPLICITY
diff --git a/ev.h b/ev.h
index bd023a7..d9f558a 100644
--- a/ev.h
+++ b/ev.h
@@ -66,8 +66,6 @@ typedef double ev_tstamp;
/*****************************************************************************/
-#include
See the description of ev_embed
watchers for more info.
Sets the allocation function to use (the prototype and semantics are -identical to the realloc C function). It is used to allocate and free -memory (no surprises here). If it returns zero when memory needs to be -allocated, the library might abort or take some potentially destructive -action. The default is your system realloc function.
+Sets the allocation function to use (the prototype is similar - the +semantics is identical - to the realloc C function). It is used to +allocate and free memory (no surprises here). If it returns zero when +memory needs to be allocated, the library might abort or take some +potentially destructive action. The default is your system realloc +function.
You could override this function in high-availability programs to, say, free some memory if it cannot allocate memory, to use a special allocator, or even to sleep a while and retry until some memory is available.
diff --git a/ev.pod b/ev.pod index fbb7ff3..e906947 100644 --- a/ev.pod +++ b/ev.pod @@ -165,13 +165,14 @@ recommended ones. See the description of C