diff --git a/src/sbbs3/scfg/scfg.c b/src/sbbs3/scfg/scfg.c index b22e0f47fbbd60cf3455d5c19ae9de237e952b2e..6da280a6dfc9071a3b95c224161bca9e9f228d00 100644 --- a/src/sbbs3/scfg/scfg.c +++ b/src/sbbs3/scfg/scfg.c @@ -2444,8 +2444,10 @@ void* new_item(void* lp, size_t size, int index, int* total) if((item = calloc(size, 1)) == NULL) return NULL; - if((p = realloc(list, size * ((*total) + 1))) == NULL) + if((p = realloc(list, size * ((*total) + 1))) == NULL) { + free(item); return NULL; + } list = p; for(int i = *total; i > index; --i) list[i] = list[i - 1];