aboutsummaryrefslogtreecommitdiff
path: root/backendC/CleanCompilerSources/backend.c
diff options
context:
space:
mode:
Diffstat (limited to 'backendC/CleanCompilerSources/backend.c')
-rw-r--r--backendC/CleanCompilerSources/backend.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/backendC/CleanCompilerSources/backend.c b/backendC/CleanCompilerSources/backend.c
index edeef7e..ff740e1 100644
--- a/backendC/CleanCompilerSources/backend.c
+++ b/backendC/CleanCompilerSources/backend.c
@@ -3269,6 +3269,8 @@ AddExtension (char *name)
File rules_file;
#endif
+struct clean_string_128 { size_t length; char chars[128]; } clean_error_string;
+
int
BEGenerateCode (CleanString outputFile)
{
@@ -3276,9 +3278,18 @@ BEGenerateCode (CleanString outputFile)
ImpRule rule;
Bool hadExtension;
+ clean_error_string.length=0;
+
if (CompilerError)
return False;
+ if (setjmp (ExitEnv)!=0){
+ ExitEnv_valid=0;
+ return False;
+ }
+
+ ExitEnv_valid=1;
+
// RemoveSpecialArrayFunctionsFromSymbolList (&gBEState.be_icl.beicl_module->im_symbols);
/* +++ hack */
@@ -3324,9 +3335,16 @@ BEGenerateCode (CleanString outputFile)
fclose (rules_file);
#endif
+ ExitEnv_valid=0;
+
return (!CompilerError);
} /* BEGenerateCode */
+CleanString BEGetError (void)
+{
+ return (CleanString)&clean_error_string;
+}
+
void
BEExportType (int isDictionary, int typeIndex)
{
@@ -3690,6 +3708,8 @@ BEInit (int argc)
{
Assert (!gBEState.be_initialised);
+ ExitEnv_valid=0;
+
CurrentPhase = "Back End";
CurrentModule = "<unknown module>";
CurrentExt = "";