...
To correct this problem, the the error handling code in verify_list()
is modified so that it no longer frees list
. This change ensures that list
is freed only once, at the same level of abstraction, in the process_list()
function.
Code Block | ||
---|---|---|
| ||
int verify_size(char const *list, size_t size) { if (size < MIN_SIZE_ALLOWED) { /* Handle Error Condition */ return -1; } return 0; } void process_list(size_t number) { char *list = (char *)malloc(number); if (list == NULL) { /* Handle Allocation Error */ } if (verify_size(list, number) == -1) { free(list); return; } /* Continue Processing list */ free(list); } |
...