diff options
Diffstat (limited to 'backendC/CleanCompilerSources/backend.c')
-rw-r--r-- | backendC/CleanCompilerSources/backend.c | 20 |
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 = ""; |