Fail cleanly on allocation failures
Previously code in the SWIG tool didn't handle allocation failures well. Most places didn't check for NULL return from malloc()/realloc()/calloc() at all, typically resulting in undefined behaviour, and some places used assert() to check for a NULL return (which is a misuse of assert() and such checks disappear if built with NDEBUG defined leaving us back with undefined behaviour). All C allocations are now done via wrapper functions (Malloc(), Realloc() and Calloc()) which emit and error and exit with non-zero status on failure, so a non-NULL return can be relied upon. Fixes #1901.
This commit is contained in:
parent
9eb75a0c07
commit
e38847f7e1
14 changed files with 83 additions and 65 deletions
|
|
@ -209,14 +209,14 @@ void Swig_warnfilter(const_String_or_char_ptr wlist, int add) {
|
|||
Insert(filter, 0, "-");
|
||||
}
|
||||
} else {
|
||||
char *temp = (char *)malloc(sizeof(char)*strlen(c) + 2);
|
||||
char *temp = (char *)Malloc(sizeof(char)*strlen(c) + 2);
|
||||
if (isdigit((int) *c)) {
|
||||
sprintf(temp, "-%s", c);
|
||||
} else {
|
||||
strcpy(temp, c);
|
||||
}
|
||||
Replace(filter, temp, "", DOH_REPLACE_FIRST);
|
||||
free(temp);
|
||||
Free(temp);
|
||||
}
|
||||
}
|
||||
c = strtok(NULL, ", ");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue