Add DOH Exit() and SetExitHandler()

Exit() is a wrapper for exit() by default, but SetExitHandler() allows
specifying a function to call instead.

This means that failures within DOH (e.g. Malloc() failing due to lack
of memory) will now perform cleanup such as removing output files.

This commit also cleans up exit statuses so SWIG should now reliably
exit with status 0 if the run was successful and status 1 if there was
an error (or a warning and -Werror was in effect).

Previously in some situations SWIG would try to exit with the status set
to the number of errors encountered, but that's problematic - for
example if there were 256 errors this would result in exit status 0 on
most platforms.  Also some error statuses have special meanings e.g.
those defined by <sysexits.h>.

Also SWIG/Javascript tried to exit with status -1 in a few places (which
typically results in exit status 255).
This commit is contained in:
Olly Betts 2022-03-06 12:33:54 +13:00
parent 7bdef23304
commit 55377bdc08
33 changed files with 243 additions and 173 deletions

View File

@ -7,6 +7,31 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
Version 4.1.0 (in progress)
===========================
2022-03-06: olly
SWIG should now reliably exit with status 0 if the run was
successful and status 1 if there was an error (or a warning and
-Werror was in effect).
Previously in some situations SWIG would try to exit with the
status set to the number of errors encountered, but that's
problematic - for example if there were 256 errors this would
result in exit status 0 on most platforms. Also some error
statuses have special meanings e.g. those defined by <sysexits.h>.
Also SWIG/Javascript tried to exit with status -1 in a few places
(which typically results in exit status 255).
2022-03-03: olly
#1901 #2223 SWIG should now always exit cleanly if memory
allocation fails, including removing any output files created
during the current run.
Previously most places in the code didn't check for a NULL return
from malloc()/realloc()/calloc() at all, typically resulting in
undefined behaviour; 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).
2022-03-03: olly
#891 Report errors for typemap attributes without a value
(previously SWIG segfaulted) and for typemap types with a value

View File

@ -2807,7 +2807,7 @@ int Python::top(Node *n) {
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
f_init = NewString("");

View File

@ -1782,7 +1782,7 @@ declaration : swig_directive { $$ = $1; }
} else {
Swig_error(cparse_file, cparse_line, "Syntax error in input(1).\n");
}
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
/* Out of class constructor/destructor declarations */
| c_constructor_decl {
@ -2015,7 +2015,7 @@ constant_directive : CONSTANT identifier EQUAL definetype SEMI {
}
| CONSTANT error END {
Swig_error(cparse_file,cparse_line,"Missing semicolon (';') after %%constant.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
;
@ -3372,7 +3372,7 @@ c_decl_tail : SEMI {
} else {
Swig_error(cparse_file, cparse_line, "Syntax error - possibly a missing semicolon (';').\n");
}
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
;
@ -3666,7 +3666,7 @@ c_constructor_decl : storage_class type LPAREN parms RPAREN ctor_end {
}
if (err) {
Swig_error(cparse_file,cparse_line,"Syntax error in input(2).\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
;
@ -4661,7 +4661,7 @@ cpp_members : cpp_member cpp_members {
int start_line = cparse_line;
skip_decl();
Swig_error(cparse_file,start_line,"Syntax error in input(3).\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
} cpp_members {
$$ = $3;
}

View File

@ -126,6 +126,8 @@
#define DohRealloc DOH_NAMESPACE(Realloc)
#define DohCalloc DOH_NAMESPACE(Calloc)
#define DohFree DOH_NAMESPACE(Free)
#define DohSetExitHandler DOH_NAMESPACE(SetExitHandler)
#define DohExit DOH_NAMESPACE(Exit)
#endif
#define DOH_MAJOR_VERSION 0
@ -274,6 +276,24 @@ extern int DohGetMaxHashExpand(void);
extern void DohSetmark(DOH *obj, int x);
extern int DohGetmark(DOH *obj);
/* Set the function for DohExit() to call instead of exit().
*
* The registered function can perform clean up, etc and then should call
* exit(status) to end the process. Bear in mind that this can be called
* after malloc() has failed, so avoiding allocating additional memory in
* the registered function is a good idea.
*
* The registered function is unregistered by DohExit() before calling it to
* avoid the potential for infinite loops.
*
* Note: This is sort of like C's atexit(), only for DohExit(). However
* only one function can be registered (setting a new function overrides the
* previous one) and the registered function is passed the exit status and
* should itself call exit().
*/
extern void DohSetExitHandler(void (*new_handler)(int));
extern void DohExit(int status);
/* -----------------------------------------------------------------------------
* Strings.
* ----------------------------------------------------------------------------- */
@ -447,6 +467,8 @@ extern void DohMemoryDebug(void);
#define Realloc DohRealloc
#define Calloc DohCalloc
#define Free DohFree
#define SetExitHandler DohSetExitHandler
#define Exit DohExit
#endif
#ifdef NIL

View File

@ -235,6 +235,26 @@ void DohMemoryDebug(void) {
}
/* Function to call instead of exit(). */
static void (*doh_exit_handler)(int) = NULL;
void DohSetExitHandler(void (*new_handler)(int)) {
doh_exit_handler = new_handler;
}
void DohExit(int status) {
if (doh_exit_handler) {
void (*handler)(int) = doh_exit_handler;
/* Unset the handler to avoid infinite loops if it tries to do something
* which calls DohExit() (e.g. calling Malloc() and that failing).
*/
doh_exit_handler = NULL;
handler(status);
} else {
exit(status);
}
}
static void allocation_failed(size_t n, size_t size) {
/* Report and exit as directly as possible to try to avoid further issues due
* to lack of memory. */
@ -251,7 +271,7 @@ static void allocation_failed(size_t n, size_t size) {
fprintf(stderr, "Failed to allocate %lu*%lu bytes\n", (unsigned long)n, (unsigned long)size);
#endif
}
exit(EXIT_FAILURE);
DohExit(EXIT_FAILURE);
}
void *DohMalloc(size_t size) {

View File

@ -134,7 +134,7 @@ int CFFI::top(Node *n) {
File *f_lisp = NewFile(lisp_filename, "w", SWIG_output_files());
if (!f_lisp) {
FileErrorDisplay(lisp_filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (CPlusPlus || CWrap) {
@ -142,7 +142,7 @@ int CFFI::top(Node *n) {
if (!f_begin) {
Delete(f_lisp);
Printf(stderr, "Unable to open %s for writing\n", cxx_filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
String *clos_filename = NewString("");
@ -151,7 +151,7 @@ int CFFI::top(Node *n) {
if (!f_clos) {
Delete(f_lisp);
Printf(stderr, "Unable to open %s for writing\n", cxx_filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
} else {
f_begin = NewString("");
@ -217,7 +217,7 @@ int CFFI::classHandler(Node *n) {
} else {
Printf(stderr, "Don't know how to deal with %s kind of class yet.\n", kind);
Printf(stderr, " (name: %s)\n", name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
return SWIG_OK;
}
@ -873,7 +873,7 @@ void CFFI::emit_struct_union(Node *n, bool un = false) {
if (Strcmp(kind, "struct") != 0 && Strcmp(kind, "union") != 0) {
Printf(stderr, "Don't know how to deal with %s kind of class yet.\n", kind);
Printf(stderr, " (name: %s)\n", name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
String *lisp_name = lispify_name(n, name, "'classname");
@ -909,7 +909,7 @@ void CFFI::emit_struct_union(Node *n, bool un = false) {
// nodeType(c),
// Getattr(c, "name"),
// Getattr(c, "type"));
// SWIG_exit(EXIT_FAILURE);
// Exit(EXIT_FAILURE);
} else {
SwigType *childType = NewStringf("%s%s", Getattr(c, "decl"), Getattr(c, "type"));

View File

@ -316,24 +316,24 @@ public:
if (!outfile) {
Printf(stderr, "Unable to determine outfile\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (directorsEnabled()) {
if (!outfile_h) {
Printf(stderr, "Unable to determine outfile_h\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) {
FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
@ -670,7 +670,7 @@ public:
f_single_out = NewFile(filen, "w", SWIG_output_files());
if (!f_single_out) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filen));
Delete(filen);
@ -684,7 +684,7 @@ public:
File *f = NewFile(filen, "w", SWIG_output_files());
if (!f) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filen));
Delete(filen);
@ -2122,12 +2122,12 @@ public:
full_imclass_name = NewStringf("%s", imclass_name);
if (Cmp(proxy_class_name, imclass_name) == 0) {
Printf(stderr, "Class name cannot be equal to intermediary class name: %s\n", proxy_class_name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (Cmp(proxy_class_name, module_class_name) == 0) {
Printf(stderr, "Class name cannot be equal to module class name: %s\n", proxy_class_name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
} else {
if (namespce) {
@ -3660,7 +3660,7 @@ public:
if (newdir_error) {
Printf(stderr, "%s\n", newdir_error);
Delete(newdir_error);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Printv(output_directory, nspace_subdirectory, SWIG_FILE_DELIMITER, 0);
Delete(nspace_subdirectory);

View File

@ -378,24 +378,24 @@ public:
if (!outfile) {
Printf(stderr, "Unable to determine outfile\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (directorsEnabled()) {
if (!outfile_h) {
Printf(stderr, "Unable to determine outfile_h\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) {
FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
@ -518,7 +518,7 @@ public:
File *im_d_file = NewFile(filen, "w", SWIG_output_files());
if (!im_d_file) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filen));
Delete(filen);
@ -549,7 +549,7 @@ public:
File *proxy_d_file = NewFile(filen, "w", SWIG_output_files());
if (!proxy_d_file) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filen));
Delete(filen);
@ -583,7 +583,7 @@ public:
File *file = NewFile(filename, "w", SWIG_output_files());
if (!file) {
FileErrorDisplay(filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Delete(filename);
@ -863,7 +863,7 @@ public:
File *class_file = NewFile(filename, "w", SWIG_output_files());
if (!class_file) {
FileErrorDisplay(filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filename));
Delete(filename);
@ -1335,7 +1335,7 @@ public:
Delete(output_directory);
if (!class_file) {
FileErrorDisplay(filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filename));
Delete(filename);
@ -3434,7 +3434,7 @@ private:
class_file = NewFile(filename, "w", SWIG_output_files());
if (!class_file) {
FileErrorDisplay(filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filename));
Delete(filename);
@ -3756,7 +3756,7 @@ private:
Swig_error(input_file, line_number,
"Class name cannot be equal to intermediary D module name: %s\n",
class_name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
String *nspace = getNSpace();
@ -3769,7 +3769,7 @@ private:
Swig_error(input_file, line_number,
"Class name cannot be the same as the root package it is in: %s\n",
class_name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Delete(dotless_package);
} else {
@ -3778,7 +3778,7 @@ private:
Swig_error(input_file, line_number,
"Class name cannot be the same as the outermost namespace it is in: %s\n",
class_name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Delete(outer);
}
@ -3790,7 +3790,7 @@ private:
Swig_error(input_file, line_number,
"Class name cannot be the same as the innermost namespace it is in: %s\n",
class_name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Delete(inner);
} else {
@ -3798,7 +3798,7 @@ private:
Swig_error(input_file, line_number,
"Class name cannot be equal to proxy D module name: %s\n",
class_name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
}
@ -4498,7 +4498,7 @@ private:
if (newdir_error) {
Printf(stderr, "%s\n", newdir_error);
Delete(newdir_error);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Printv(output_directory, nspace_subdirectory, SWIG_FILE_DELIMITER, 0);
Delete(nspace_subdirectory);

View File

@ -337,7 +337,7 @@ private:
if (saw_nocgo_flag) {
Printf(stderr, "SWIG -go: -no-cgo option is no longer supported\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (gccgo_flag && !pkgpath_option && !prefix_option) {
@ -356,7 +356,7 @@ private:
// for this test to simply be taken out.
if (intgo_type_size == 0 && !display_help) {
Printf(stderr, "SWIG -go: -intgosize option required but not specified\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (intgo_type_size == 32) {
@ -453,7 +453,7 @@ private:
FILE *swig_input = Swig_open(swig_filename);
if (swig_input == NULL) {
FileErrorDisplay(swig_filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
String *swig_input_content = Swig_read_file(swig_input);
siphash(&hash, Char(swig_input_content), Len(swig_input_content));
@ -467,25 +467,25 @@ private:
f_c_begin = NewFile(c_filename, "w", SWIG_output_files());
if (!f_c_begin) {
FileErrorDisplay(c_filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (directorsEnabled()) {
if (!c_filename_h) {
Printf(stderr, "Unable to determine outfile_h\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_c_directors_h = NewFile(c_filename_h, "w", SWIG_output_files());
if (!f_c_directors_h) {
FileErrorDisplay(c_filename_h);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
f_go_begin = NewFile(go_filename, "w", SWIG_output_files());
if (!f_go_begin) {
FileErrorDisplay(go_filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_c_runtime = NewString("");

View File

@ -132,7 +132,7 @@ public:
if (argv[i]) {
if (strcmp(argv[i], "-help") == 0) {
fputs(usage, stdout);
SWIG_exit(EXIT_SUCCESS);
Exit(EXIT_SUCCESS);
} else if (strcmp(argv[i], "-prefix") == 0) {
if (argv[i + 1]) {
prefix = NewString(argv[i + 1]);
@ -176,7 +176,7 @@ public:
procdoc = NewFile(argv[i + 1], "w", SWIG_output_files());
if (!procdoc) {
FileErrorDisplay(argv[i + 1]);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Swig_mark_arg(i);
Swig_mark_arg(i + 1);
@ -255,7 +255,7 @@ public:
if (goops) {
if (linkage != GUILE_LSTYLE_PASSIVE && linkage != GUILE_LSTYLE_MODULE) {
Printf(stderr, "guile: GOOPS support requires passive or module linkage\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
@ -298,7 +298,7 @@ public:
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
f_init = NewString("");
@ -495,7 +495,7 @@ public:
File *scmstubfile = NewFile(fname, "w", SWIG_output_files());
if (!scmstubfile) {
FileErrorDisplay(fname);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Delete(fname);
@ -526,7 +526,7 @@ public:
File *goopsfile = NewFile(fname, "w", SWIG_output_files());
if (!goopsfile) {
FileErrorDisplay(fname);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Delete(fname);
Swig_banner_target_lang(goopsfile, ";;;");

View File

@ -90,7 +90,7 @@ static void collect_interface_base_classes(Node *n) {
if (!GetFlag(base.item, "feature:ignore")) {
if (!Getattr(base.item, "feature:interface")) {
Swig_error(Getfile(n), Getline(n), "Base class '%s' of '%s' is not similarly marked as an interface.\n", SwigType_namestr(Getattr(base.item, "name")), SwigType_namestr(Getattr(n, "name")));
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
}
@ -114,7 +114,7 @@ static void process_interface_name(Node *n) {
String *interface_name = Getattr(n, "feature:interface:name");
if (!Len(interface_name)) {
Swig_error(Getfile(n), Getline(n), "The interface feature for '%s' is missing the name attribute.\n", SwigType_namestr(Getattr(n, "name")));
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (Strchr(interface_name, '%')) {
String *name = NewStringf(interface_name, Getattr(n, "sym:name"));

View File

@ -371,24 +371,24 @@ public:
if (!outfile) {
Printf(stderr, "Unable to determine outfile\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (directorsEnabled()) {
if (!outfile_h) {
Printf(stderr, "Unable to determine outfile_h\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) {
FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
@ -521,7 +521,7 @@ public:
File *f_im = NewFile(filen, "w", SWIG_output_files());
if (!f_im) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filen));
Delete(filen);
@ -576,7 +576,7 @@ public:
File *f_module = NewFile(filen, "w", SWIG_output_files());
if (!f_module) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filen));
Delete(filen);
@ -635,7 +635,7 @@ public:
File *f_module = NewFile(filen, "w", SWIG_output_files());
if (!f_module) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filen));
Delete(filen);
@ -1343,7 +1343,7 @@ public:
File *f_enum = NewFile(filen, "w", SWIG_output_files());
if (!f_enum) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filen));
Delete(filen);
@ -2215,12 +2215,12 @@ public:
if (Cmp(proxy_class_name, imclass_name) == 0) {
Printf(stderr, "Class name cannot be equal to intermediary class name: %s\n", proxy_class_name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (Cmp(proxy_class_name, module_class_name) == 0) {
Printf(stderr, "Class name cannot be equal to module class name: %s\n", proxy_class_name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
} else {
if (outerClassesPrefix) {
@ -2260,7 +2260,7 @@ public:
f_proxy = NewFile(filen, "w", SWIG_output_files());
if (!f_proxy) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filen));
Delete(filen);
@ -2294,7 +2294,7 @@ public:
f_interface = NewFile(filen, "w", SWIG_output_files());
if (!f_interface) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, filen); // file name ownership goes to the list
emitBanner(f_interface);
@ -3497,7 +3497,7 @@ public:
File *f_swigtype = NewFile(filen, "w", SWIG_output_files());
if (!f_swigtype) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Append(filenames_list, Copy(filen));
Delete(filen);
@ -3712,7 +3712,7 @@ public:
if (newdir_error) {
Printf(stderr, "%s\n", newdir_error);
Delete(newdir_error);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Printv(output_directory, nspace_subdirectory, SWIG_FILE_DELIMITER, 0);
Delete(nspace_subdirectory);

View File

@ -537,21 +537,21 @@ void JAVASCRIPT::main(int argc, char *argv[]) {
if (strcmp(argv[i], "-v8") == 0) {
if (engine != -1) {
Printf(stderr, ERR_MSG_ONLY_ONE_ENGINE_PLEASE);
SWIG_exit(-1);
Exit(EXIT_FAILURE);
}
Swig_mark_arg(i);
engine = JSEmitter::V8;
} else if (strcmp(argv[i], "-jsc") == 0) {
if (engine != -1) {
Printf(stderr, ERR_MSG_ONLY_ONE_ENGINE_PLEASE);
SWIG_exit(-1);
Exit(EXIT_FAILURE);
}
Swig_mark_arg(i);
engine = JSEmitter::JavascriptCore;
} else if (strcmp(argv[i], "-node") == 0) {
if (engine != -1) {
Printf(stderr, ERR_MSG_ONLY_ONE_ENGINE_PLEASE);
SWIG_exit(-1);
Exit(EXIT_FAILURE);
}
Swig_mark_arg(i);
engine = JSEmitter::NodeJS;
@ -595,7 +595,7 @@ void JAVASCRIPT::main(int argc, char *argv[]) {
default:
{
Printf(stderr, "SWIG Javascript: Unknown engine. Please specify one of '-jsc', '-v8' or '-node'.\n");
SWIG_exit(-1);
Exit(EXIT_FAILURE);
break;
}
}
@ -666,7 +666,7 @@ Template JSEmitter::getTemplate(const String *name) {
if (!templ) {
Printf(stderr, "Could not find template %s\n.", name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Template t(templ, name);
@ -1576,7 +1576,7 @@ void JSCEmitter::marshalInputArgs(Node *n, ParmList *parms, Wrapper *wrapper, Ma
break;
default:
Printf(stderr, "Illegal MarshallingMode.");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
tm = emitInputTypemap(n, p, wrapper, arg);
Delete(arg);
@ -1599,7 +1599,7 @@ int JSCEmitter::initialize(Node *n) {
f_wrap_cpp = NewFile(outfile, "w", SWIG_output_files());
if (!f_wrap_cpp) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
/* Initialization of members */
@ -1920,7 +1920,7 @@ int V8Emitter::initialize(Node *n) {
f_wrap_cpp = NewFile(outfile, "w", SWIG_output_files());
if (!f_wrap_cpp) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
@ -2214,7 +2214,7 @@ void V8Emitter::marshalInputArgs(Node *n, ParmList *parms, Wrapper *wrapper, Mar
break;
default:
Printf(stderr, "Illegal MarshallingMode.");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
tm = emitInputTypemap(n, p, wrapper, arg);
@ -2370,7 +2370,7 @@ Template::Template(const String *code_) {
if (!code_) {
Printf(stdout, "Template code was null. Illegal input for template.");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
code = NewString(code_);
templateName = NewString("");
@ -2380,7 +2380,7 @@ Template::Template(const String *code_, const String *templateName_) {
if (!code_) {
Printf(stdout, "Template code was null. Illegal input for template.");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
code = NewString(code_);

View File

@ -304,7 +304,7 @@ public:
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
f_init = NewString("");

View File

@ -403,14 +403,14 @@ static void SWIG_dump_runtime() {
outfile = lang->defaultExternalRuntimeFilename();
if (!outfile) {
Printf(stderr, "*** Please provide a filename for the external runtime\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
runtime = NewFile(outfile, "w", SWIG_output_files());
if (!runtime) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Swig_banner(runtime);
@ -420,7 +420,7 @@ static void SWIG_dump_runtime() {
if (!s) {
Printf(stderr, "*** Unable to open 'swiglabels.swg'\n");
Delete(runtime);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Printf(runtime, "%s", s);
Delete(s);
@ -429,7 +429,7 @@ static void SWIG_dump_runtime() {
if (!s) {
Printf(stderr, "*** Unable to open 'swigerrors.swg'\n");
Delete(runtime);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Printf(runtime, "%s", s);
Delete(s);
@ -438,7 +438,7 @@ static void SWIG_dump_runtime() {
if (!s) {
Printf(stderr, "*** Unable to open 'swigrun.swg'\n");
Delete(runtime);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Printf(runtime, "%s", s);
Delete(s);
@ -451,13 +451,13 @@ static void SWIG_dump_runtime() {
if (!s) {
Printf(stderr, "*** Unable to open 'runtime.swg'\n");
Delete(runtime);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Printf(runtime, "%s", s);
Delete(s);
Delete(runtime);
SWIG_exit(EXIT_SUCCESS);
Exit(EXIT_SUCCESS);
}
static void getoptions(int argc, char *argv[]) {
@ -531,7 +531,7 @@ static void getoptions(int argc, char *argv[]) {
Printf(stdout, "%s\n", version);
Delete(version);
Swig_mark_arg(i);
SWIG_exit(EXIT_SUCCESS);
Exit(EXIT_SUCCESS);
} else if (strcmp(argv[i], "-small") == 0) {
Wrapper_compact_print_mode_set(1);
Wrapper_virtual_elimination_mode_set(1);
@ -594,7 +594,7 @@ static void getoptions(int argc, char *argv[]) {
Printf(stdout, "%s\n", SwigLib);
if (SwigLibWinUnix)
Printf(stdout, "%s\n", SwigLibWinUnix);
SWIG_exit(EXIT_SUCCESS);
Exit(EXIT_SUCCESS);
} else if (strcmp(argv[i], "-o") == 0) {
Swig_mark_arg(i);
if (argv[i + 1]) {
@ -647,7 +647,7 @@ static void getoptions(int argc, char *argv[]) {
#endif
);
fprintf(stdout, "\nPlease see %s for reporting bugs and further information\n", PACKAGE_BUGREPORT);
SWIG_exit(EXIT_SUCCESS);
Exit(EXIT_SUCCESS);
} else if (strcmp(argv[i], "-copyright") == 0) {
fprintf(stdout, "\nSWIG Version %s\n", Swig_package_version());
fprintf(stdout, "Copyright (c) 1995-1998\n");
@ -656,7 +656,7 @@ static void getoptions(int argc, char *argv[]) {
fprintf(stdout, "University of Chicago\n");
fprintf(stdout, "Copyright (c) 2005-2006\n");
fprintf(stdout, "Arizona Board of Regents (University of Arizona)\n");
SWIG_exit(EXIT_SUCCESS);
Exit(EXIT_SUCCESS);
} else if (strncmp(argv[i], "-l", 2) == 0) {
// Add a new directory search path
Append(libfiles, argv[i] + 2);
@ -880,9 +880,14 @@ static void getoptions(int argc, char *argv[]) {
}
}
static void SWIG_exit_handler(int status);
int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
char *c;
/* Set function for Exit() to call. */
SetExitHandler(SWIG_exit_handler);
/* Initialize the SWIG core */
Swig_init();
@ -969,7 +974,7 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
if (help) {
Printf(stdout, "\nNote: 'swig -<lang> -help' displays options for a specific target language.\n\n");
SWIG_exit(EXIT_SUCCESS); // Exit if we're in help mode
Exit(EXIT_SUCCESS); // Exit if we're in help mode
}
// Check all of the options to make sure we're cool.
@ -978,7 +983,7 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
if (CPlusPlus && cparse_cplusplusout) {
Printf(stderr, "The -c++out option is for C input but C++ input has been requested via -c++\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
install_opts(argc, argv);
@ -1043,7 +1048,7 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
File *f_outfile = NewFile(outfile, "w", SWIG_output_files());
if (!f_outfile) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
} else {
if (Verbose)
Printf(stdout, "'%s' checked out from the SWIG library.\n", outfile);
@ -1071,7 +1076,7 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
} else {
Printf(stderr, "Unable to find file '%s'.\n", input_file);
}
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
} else {
Swig_warning(WARN_DEPRECATED_INPUT_FILE, "SWIG", 1, "Use of the include path to find the input file is deprecated and will not work with ccache. Please include the path when specifying the input file.\n"); // so that behaviour is like c/c++ compilers
}
@ -1080,7 +1085,7 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
if (!tlm) {
Printf(stderr, "No target language specified.\n");
Printf(stderr, "Use 'swig -help' for more information.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (!no_cpp) {
@ -1104,11 +1109,11 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
fclose(df);
}
if (Swig_error_count()) {
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (cpp_only) {
Printf(stdout, "%s", cpps);
SWIG_exit(EXIT_SUCCESS);
Exit(EXIT_SUCCESS);
}
if (depend) {
if (!no_cpp) {
@ -1130,14 +1135,14 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
f_dependencies_file = NewFile(dependencies_file, "w", SWIG_output_files());
if (!f_dependencies_file) {
FileErrorDisplay(dependencies_file);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
} else if (!depend_only) {
String *filename = NewStringf("%s_wrap.%s", basename, depends_extension);
f_dependencies_file = NewFile(filename, "w", SWIG_output_files());
if (!f_dependencies_file) {
FileErrorDisplay(filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
} else
f_dependencies_file = stdout;
@ -1170,14 +1175,14 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
if (f_dependencies_file != stdout)
Delete(f_dependencies_file);
if (depend_only)
SWIG_exit(EXIT_SUCCESS);
Exit(EXIT_SUCCESS);
Delete(inputfile_filename);
Delete(basename);
Delete(phony_targets);
} else {
Printf(stderr, "Cannot generate dependencies with -nopreprocess\n");
// Actually we could but it would be inefficient when just generating dependencies, as it would be done after Swig_cparse
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
Seek(cpps, 0, SEEK_SET);
@ -1282,13 +1287,13 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
if (top) {
if (!Getattr(top, "name")) {
Printf(stderr, "No module name specified using %%module or -module.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
} else {
/* Set some filename information on the object */
String *infile = scanner_get_main_input_file();
if (!infile) {
Printf(stderr, "Missing input file in preprocessed output.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Setattr(top, "infile", infile); // Note: if nopreprocess then infile is the original input file, otherwise input_file
Setattr(top, "inputfile", input_file);
@ -1362,7 +1367,7 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
if (!f_outfiles) {
Printf(stderr, "Failed to write list of output files to the filename '%s' specified in CCACHE_OUTFILES environment variable - ", outfiles);
FileErrorDisplay(outfiles);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
} else {
int i;
for (i = 0; i < Len(all_output_files); i++)
@ -1384,22 +1389,22 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) {
error_count += Swig_error_count();
if (error_count != 0)
SWIG_exit(error_count);
Exit(EXIT_FAILURE);
return 0;
}
/* -----------------------------------------------------------------------------
* SWIG_exit()
* SWIG_exit_handler()
*
* Cleanup and either freeze or exit
* ----------------------------------------------------------------------------- */
void SWIG_exit(int exit_code) {
static void SWIG_exit_handler(int status) {
while (freeze) {
}
if (exit_code > 0) {
if (status > 0) {
CloseAllOpenFiles();
/* Remove all generated files */
@ -1413,5 +1418,5 @@ void SWIG_exit(int exit_code) {
}
}
exit(exit_code);
exit(status);
}

View File

@ -66,7 +66,7 @@ public:
if (argv[i]) {
if (strcmp(argv[i], "-help") == 0) {
fputs(usage, stdout);
SWIG_exit(0);
Exit(EXIT_SUCCESS);
} else if (strcmp(argv[i], "-prefix") == 0) {
if (argv[i + 1]) {
prefix = NewString(argv[i + 1]);
@ -130,7 +130,7 @@ public:
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
f_init = NewString("");

View File

@ -99,10 +99,10 @@ public:
if (argv[i]) {
if (strcmp(argv[i], "-help") == 0) {
fputs(usage, stdout);
SWIG_exit(0);
Exit(EXIT_SUCCESS);
} else if (strcmp(argv[i], "-where") == 0) {
PrintIncludeArg();
SWIG_exit(0);
Exit(EXIT_SUCCESS);
} else if (strcmp(argv[i], "-prefix") == 0) {
if (argv[i + 1]) {
prefix = NewString(argv[i + 1]);
@ -228,7 +228,7 @@ public:
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
f_init = NewString("");
@ -311,12 +311,12 @@ public:
String *mlfilen = NewStringf("%s%s", SWIG_output_directory(), mlfile);
if ((f_mlout = NewFile(mlfilen, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(mlfilen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
String *mlifilen = NewStringf("%s%s", SWIG_output_directory(), mlifile);
if ((f_mliout = NewFile(mlifilen, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(mlifilen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
emitBanner(f_mlout);
emitBanner(f_mliout);

View File

@ -119,7 +119,7 @@ public:
} else if (strcmp(argv[i], "-nocppcast") == 0) {
Printf(stderr, "Deprecated command line option: %s. This option is no longer supported.\n", argv[i]);
Swig_mark_arg(i);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
}
@ -167,7 +167,7 @@ public:
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
f_header = NewString("");

View File

@ -154,11 +154,11 @@ public:
if (strcmp(argv[i], "-package") == 0) {
Printv(stderr,
"*** -package is no longer supported\n*** use the directive '%module A::B::C' in your interface file instead\n*** see the Perl section in the manual for details.\n", NIL);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
} else if (strcmp(argv[i], "-interface") == 0) {
Printv(stderr,
"*** -interface is no longer supported\n*** use the directive '%module A::B::C' in your interface file instead\n*** see the Perl section in the manual for details.\n", NIL);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
} else if (strcmp(argv[i], "-exportall") == 0) {
export_all = 1;
Swig_mark_arg(i);
@ -197,7 +197,7 @@ public:
} else if (strcmp(argv[i], "-nocppcast") == 0) {
Printf(stderr, "Deprecated command line option: %s. This option is no longer supported.\n", argv[i]);
Swig_mark_arg(i);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
}
@ -276,7 +276,7 @@ public:
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
f_init = NewString("");
@ -289,7 +289,7 @@ public:
f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) {
FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
@ -407,7 +407,7 @@ public:
String *filen = NewStringf("%s%s", SWIG_output_directory(), pmfile);
if ((f_pm = NewFile(filen, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Delete(filen);
filen = NULL;

View File

@ -342,7 +342,7 @@ public:
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewStringEmpty();
@ -366,7 +366,7 @@ public:
f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) {
FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
@ -438,7 +438,7 @@ public:
f_h = NewFile(filen, "w", SWIG_output_files());
if (!f_h) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Swig_banner(f_h);
@ -651,7 +651,7 @@ public:
File *f_phpcode = NewFile(php_filename, "w", SWIG_output_files());
if (!f_phpcode) {
FileErrorDisplay(php_filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Printf(f_phpcode, "<?php\n\n");

View File

@ -440,7 +440,7 @@ public:
strcmp(argv[i], "-proxydel") == 0) {
Printf(stderr, "Deprecated command line option: %s. This option is no longer supported.\n", argv[i]);
Swig_mark_arg(i);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
@ -448,7 +448,7 @@ public:
if (builtin && !shadow) {
Printf(stderr, "Incompatible options -builtin and -noproxy specified.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (fastproxy) {
@ -507,22 +507,22 @@ public:
}
if (Getattr(options, "nocastmode")) {
Printf(stderr, "Deprecated module option: %s. This option is no longer supported.\n", "nocastmode");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (Getattr(options, "extranative")) {
extranative = 1;
}
if (Getattr(options, "noextranative")) {
Printf(stderr, "Deprecated module option: %s. This option is no longer supported.\n", "noextranative");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (Getattr(options, "outputtuple")) {
Printf(stderr, "Deprecated module option: %s. This option is no longer supported.\n", "outputtuple");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (Getattr(options, "nooutputtuple")) {
Printf(stderr, "Deprecated module option: %s. This option is no longer supported.\n", "nooutputtuple");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
mod_docstring = Getattr(options, "docstring");
package = Getattr(options, "package");
@ -541,7 +541,7 @@ public:
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
f_init = NewString("");
@ -565,7 +565,7 @@ public:
f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) {
FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
} else {
f_runtime_h = f_runtime;
@ -670,7 +670,7 @@ public:
Insert(module, 0, "_");
if ((f_shadow_py = NewFile(filen, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Delete(filen);
filen = NULL;

View File

@ -805,7 +805,7 @@ int R::DumpCode(Node *n) {
File *scode = NewFile(output_filename, "w", SWIG_output_files());
if (!scode) {
FileErrorDisplay(output_filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Delete(output_filename);
@ -820,7 +820,7 @@ int R::DumpCode(Node *n) {
File *runtime = NewFile(outfile,"w", SWIG_output_files());
if (!runtime) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Printf(runtime, "%s", f_begin);
@ -837,7 +837,7 @@ int R::DumpCode(Node *n) {
File *ns = NewFile(output_filename, "w", SWIG_output_files());
if (!ns) {
FileErrorDisplay(output_filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
Delete(output_filename);
@ -2740,7 +2740,7 @@ void R::main(int argc, char *argv[]) {
} else if (strcmp(argv[i], "-nocppcast") == 0) {
Printf(stderr, "Deprecated command line option: %s. This option is no longer supported.\n", argv[i]);
Swig_mark_arg(i);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (debugMode) {

View File

@ -898,7 +898,7 @@ public:
} else if (strcmp(argv[i], "-nocppcast") == 0) {
Printf(stderr, "Deprecated command line option: %s. This option is no longer supported.\n", argv[i]);
Swig_mark_arg(i);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
}
@ -1037,13 +1037,13 @@ public:
if (!outfile) {
Printf(stderr, "Unable to determine outfile\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
@ -1058,12 +1058,12 @@ public:
if (directorsEnabled()) {
if (!outfile_h) {
Printf(stderr, "Unable to determine outfile_h\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) {
FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}

View File

@ -183,7 +183,7 @@ public:
beginSection = NewFile(outputFilename, "w", SWIG_output_files());
if (!beginSection) {
FileErrorDisplay(outputFilename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
runtimeSection = NewString("");
initSection = NewString("");
@ -824,7 +824,7 @@ public:
builderFile = NewFile(builderFilename, "w", SWIG_output_files());
if (!builderFile) {
FileErrorDisplay(builderFilename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
emitBanner(builderFile);
@ -949,7 +949,7 @@ public:
gatewayXMLFile = NewFile(gatewayXMLFilename, "w", SWIG_output_files());
if (!gatewayXMLFile) {
FileErrorDisplay(gatewayXMLFilename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
// Add a slightly modified SWIG banner to the gateway XML ("--modify" is illegal in XML)
gatewayXML = NewString("");
@ -1066,7 +1066,7 @@ public:
loaderFile = NewFile(loaderFilename, "w", SWIG_output_files());
if (!loaderFile) {
FileErrorDisplay(loaderFilename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
emitBanner(loaderFile);

View File

@ -247,7 +247,7 @@ int main(int margc, char **margv) {
Printf(stderr, "Target language option %s (%s) is no longer supported.\n", language_module->name, language_module->help);
else
Printf(stderr, "Target language option %s is no longer supported.\n", language_module->name);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
} else if ((strcmp(argv[i], "-help") == 0) || (strcmp(argv[i], "--help") == 0)) {
if (strcmp(argv[i], "--help") == 0)

View File

@ -113,7 +113,7 @@ public:
} else if (strcmp(argv[i], "-nocppcast") == 0) {
Printf(stderr, "Deprecated command line option: %s. This option is no longer supported.\n", argv[i]);
Swig_mark_arg(i);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
}
@ -138,7 +138,7 @@ public:
f_begin = NewFile(outfile, "w", SWIG_output_files());
if (!f_begin) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_runtime = NewString("");
f_init = NewString("");
@ -182,7 +182,7 @@ public:
if ((f_shadow = NewFile(filen, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
f_shadow_stubs = NewString("");

View File

@ -969,7 +969,7 @@ class TypePass:private Dispatcher {
if (Getattr(c, "sym:overloaded") != checkoverloaded) {
Printf(stdout, "sym:overloaded error c:%p checkoverloaded:%p\n", c, checkoverloaded);
Swig_print_node(c);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
String *decl = Strcmp(nodeType(c), "using") == 0 ? NewString("------") : Getattr(c, "decl");
@ -977,7 +977,7 @@ class TypePass:private Dispatcher {
if (!Getattr(c, "sym:overloaded")) {
Printf(stdout, "sym:overloaded error.....%p\n", c);
Swig_print_node(c);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
c = Getattr(c, "sym:nextSibling");
}

View File

@ -52,7 +52,7 @@ public:
out = NewFile(outfile, "w", SWIG_output_files());
if (!out) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
continue;
}
@ -89,7 +89,7 @@ public:
out = NewFile(outfile, "w", SWIG_output_files());
if (!out) {
FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
Printf(out, "<?xml version=\"1.0\" ?> \n");
@ -310,7 +310,7 @@ void Swig_print_xml(DOH *obj, String *filename) {
out = NewFile(filename, "w", SWIG_output_files());
if (!out) {
FileErrorDisplay(filename);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}

View File

@ -83,11 +83,11 @@ void Swig_check_options(int check_input) {
}
if (error) {
Printf(stderr, "Use 'swig -help' for available options.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
if (check_input && marked[numargs - 1]) {
Printf(stderr, "Must specify an input file. Use -help for available options.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
@ -100,5 +100,5 @@ void Swig_check_options(int check_input) {
void Swig_arg_error(void) {
Printf(stderr, "SWIG : Unable to parse command line options.\n");
Printf(stderr, "Use 'swig -help' for available options.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}

View File

@ -1162,7 +1162,7 @@ int Swig_scopename_check(const String *s) {
String *Swig_string_command(String *s) {
Swig_error("SWIG", Getline(s), "Command encoder no longer supported - use regex encoder instead.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
return 0;
}
@ -1309,7 +1309,7 @@ static int split_regex_pattern_subst(String *s, String **pattern, String **subst
err_out:
Swig_error("SWIG", Getline(s), "Invalid regex substitution: '%s'.\n", s);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
return 0;
}
@ -1435,7 +1435,7 @@ String *Swig_string_regex(String *s) {
pcre2_get_error_message (pcre_errornum, pcre_error, sizeof pcre_error);
Swig_error("SWIG", Getline(s), "PCRE compilation failed: '%s' in '%s':%i.\n",
pcre_error, Char(pattern), pcre_errorpos);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
match_data = pcre2_match_data_create_from_pattern (compiled_pat, NULL);
rc = pcre2_match(compiled_pat, (PCRE2_SPTR8)input, PCRE2_ZERO_TERMINATED, 0, 0, match_data, NULL);
@ -1445,7 +1445,7 @@ String *Swig_string_regex(String *s) {
} else if (rc != PCRE2_ERROR_NOMATCH) {
Swig_error("SWIG", Getline(s), "PCRE execution failed: error %d while matching \"%s\" using \"%s\".\n",
rc, Char(pattern), input);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
}
@ -1470,7 +1470,7 @@ String *Swig_pcre_version(void) {
String *Swig_string_regex(String *s) {
Swig_error("SWIG", Getline(s), "PCRE regex support not enabled in this SWIG build.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
return 0;
}

View File

@ -1108,7 +1108,7 @@ static int name_regexmatch_value(Node *n, String *pattern, String *s) {
Swig_error("SWIG", Getline(n),
"Invalid regex \"%s\": compilation failed at %d: %s\n",
Char(pattern), errpos, err);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
pcre2_match_data *match_data = 0;
@ -1124,7 +1124,7 @@ static int name_regexmatch_value(Node *n, String *pattern, String *s) {
Swig_error("SWIG", Getline(n),
"Matching \"%s\" against regex \"%s\" failed: %d\n",
Char(s), Char(pattern), rc);
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
}
return 1;
@ -1137,7 +1137,7 @@ static int name_regexmatch_value(Node *n, String *pattern, String *s) {
(void)s;
Swig_error("SWIG", Getline(n),
"PCRE regex matching is not available in this SWIG build.\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
return 0;
}

View File

@ -833,7 +833,7 @@ static int look(Scanner *s) {
return SWIG_TOKEN_MODEQUAL;
} else if (c == '}') {
Swig_error(cparse_file, cparse_line, "Syntax error. Extraneous '%%}'\n");
SWIG_exit(EXIT_FAILURE);
Exit(EXIT_FAILURE);
} else {
retract(s, 1);
return SWIG_TOKEN_PERCENT;

View File

@ -439,8 +439,6 @@ extern int ParmList_is_compactdefargs(ParmList *p);
extern void Language_replace_special_variables(String *method, String *tm, Parm *parm);
extern void Swig_print(DOH *object, int count);
extern void Swig_print_with_location(DOH *object, int count);
extern void SWIG_exit(int exit_code);
/* -- template init -- */
extern void SwigType_template_init(void);