Hi, this patch closes potential memory leaks in the mandoc memory wrapper functions and follows the examples in the manpages.
diff --git mandoc_aux.c mandoc_aux.c index 7c23ecfdd01..dbfb83faffc 100644 --- mandoc_aux.c +++ mandoc_aux.c @@ -66,27 +66,43 @@ mandoc_malloc(size_t size) void * mandoc_realloc(void *ptr, size_t size) { - ptr = realloc(ptr, size); - if (ptr == NULL) + void *nptr; + + nptr = realloc(ptr, size); + if (nptr == NULL) { + free(ptr); err((int)MANDOCLEVEL_SYSERR, NULL); + } + + ptr = nptr; return ptr; } void * mandoc_reallocarray(void *ptr, size_t num, size_t size) { - ptr = reallocarray(ptr, num, size); - if (ptr == NULL) + void *nptr; + + nptr = reallocarray(ptr, num, size); + if (nptr == NULL) { + free(ptr); err((int)MANDOCLEVEL_SYSERR, NULL); + } + ptr = nptr; return ptr; } void * mandoc_recallocarray(void *ptr, size_t oldnum, size_t num, size_t size) { - ptr = recallocarray(ptr, oldnum, num, size); - if (ptr == NULL) + void *nptr; + + nptr = recallocarray(ptr, oldnum, num, size); + if (nptr == NULL) { + free(nptr); err((int)MANDOCLEVEL_SYSERR, NULL); + } + ptr = nptr; return ptr; }