Fix error path if realloc call fails.
[ocaml-ancient.git] / ancient_c.c
index d5b11af..58735d0 100644 (file)
@@ -133,13 +133,15 @@ area_init_custom (area *a,
 static inline int
 area_append (area *a, const void *obj, size_t size)
 {
+  void *ptr;
   while (a->n + size > a->size) {
     if (a->size == 0) a->size = 256; else a->size <<= 1;
-    a->ptr =
+    ptr =
       a->realloc
       ? a->realloc (a->data, a->ptr, a->size)
       : realloc (a->ptr, a->size);
-    if (a->ptr == 0) return -1; // Out of memory.
+    if (ptr == 0) return -1; // Out of memory.
+    a->ptr = ptr;
   }
   memcpy (a->ptr + a->n, obj, size);
   a->n += size;