olsr: add olsr_realloc function
authorFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 21 Apr 2016 08:28:13 +0000 (10:28 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 21 Apr 2016 09:15:56 +0000 (11:15 +0200)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/olsr.c
src/olsr.h

index 426d970..4f751e2 100644 (file)
@@ -582,7 +582,7 @@ olsr_exit(const char *msg, int val)
 /**
  * Wrapper for malloc(3) that does error-checking
  *
- * @param size the number of bytes to allocalte
+ * @param size the number of bytes to allocate
  * @param id a string identifying the caller for
  * use in error messaging
  *
@@ -608,6 +608,29 @@ olsr_malloc(size_t size, const char *id)
   return ptr;
 }
 
+/**
+ * Wrapper for realloc(3) that does error-checking
+ *
+ * @param ptr pointer to the buffer
+ * @param size the number of bytes to (re)allocate
+ * @param id a string identifying the caller for
+ * use in error messaging
+ *
+ * @return a void pointer to the memory allocated
+ */
+void *
+olsr_realloc(void * ptr, size_t size, const char *id)
+{
+  ptr = realloc(ptr, size);
+  if (!ptr) {
+    char buf[1024];
+    snprintf(buf, sizeof(buf), "%s: out of memory!: %s\n", id, strerror(errno));
+    olsr_exit(buf, EXIT_FAILURE);
+  }
+
+  return ptr;
+}
+
 /**
  *Wrapper for printf that prints to a specific
  *debuglevel upper limit
index 7a571f0..dacb144 100644 (file)
@@ -91,6 +91,8 @@ void olsr_exit(const char *, int) __attribute__((noreturn));
 
 void *olsr_malloc(size_t, const char *);
 
+void *olsr_realloc(void *, size_t, const char *);
+
 int olsr_printf(int, const char *, ...) __attribute__ ((format(printf, 2, 3)));
 
 void olsr_trigger_forced_update(void *);