aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjohnvg2008-12-19 12:53:35 +0000
committerjohnvg2008-12-19 12:53:35 +0000
commit357b399ad15c2192fc3852df8a3aa7982d55cfa3 (patch)
tree2ddbda187895d63635cfa097202f1b8108f0e1f2
parentadd ExitEnv_valid (diff)
add ExitEnv_valid
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1714 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
-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 = "";