> + /* Attempt to free the storage associated with the local symbols > + that we threw away. Whether or not this has any effect on the > + memory allocation depends on the malloc implementation and how > + many symbols we managed to discard. */ > syms = realloc(syms, nsyms * sizeof(*syms)); > + if (syms == NULL) { > + free(s); > + free(strings); > + return; > + }
If realloc() fails it leaves the original object unchanged, so can't you just write: t = realloc(syms, nsyms * sizeof(*syms)); if (t != NULL) { syms = t; } ? Jay.