Browse Source

+ minimal_stop to avoid memory loss with -iTO switch

pierre 26 years ago
parent
commit
f88f9f5763
1 changed files with 19 additions and 6 deletions
  1. 19 6
      compiler/compiler.pas

+ 19 - 6
compiler/compiler.pas

@@ -133,6 +133,7 @@ uses
 var
   CompilerInitedAfterArgs,
   CompilerInited : boolean;
+  olddo_stop : tstopprocedure;
 
 {$ifdef USEEXCEPT}
 
@@ -145,7 +146,6 @@ begin
 end;
 {$endif USEEXCEPT}
 
-
 {****************************************************************************
                                 Compiler
 ****************************************************************************}
@@ -210,6 +210,12 @@ begin
   CompilerInitedAfterArgs:=true;
 end;
 
+procedure minimal_stop;
+begin
+  DoneCompiler;
+  olddo_stop;
+end;
+
 
 function Compile(const cmd:string):longint;
 
@@ -225,10 +231,15 @@ var
   starttime  : real;
 {$ifdef USEEXCEPT}
   recoverpos : jmp_buf;
-  olddo_stop : tstopprocedure;
 {$endif}
 begin
 
+  olddo_stop:=do_stop;
+{$ifdef TP}
+  do_stop:=minimal_stop;
+{$else TP}
+  do_stop:=@minimal_stop;
+{$endif TP}
 { Initialize the compiler }
   InitCompiler(cmd);
 
@@ -250,7 +261,6 @@ begin
 {$ifdef USEEXCEPT}
   if setjmp(recoverpos)=0 then
    begin
-     olddo_stop:=do_stop;
      recoverpospointer:=@recoverpos;
 {$ifdef TP}
      do_stop:=recoverstop;
@@ -270,10 +280,10 @@ begin
       end;
 {$ifdef USEEXCEPT}
     end;
-{ Stop is always called, so we come here when a program is compiled or not }
-  do_stop:=olddo_stop;
 {$endif USEEXCEPT}
 
+{ Stop is always called, so we come here when a program is compiled or not }
+  do_stop:=olddo_stop;
 { Stop the compiler, frees also memory }
 { no message possible after this !!    }
   DoneCompiler;
@@ -300,7 +310,10 @@ end;
 end.
 {
   $Log$
-  Revision 1.37  1999-11-06 14:34:20  peter
+  Revision 1.38  1999-11-09 23:47:53  pierre
+   + minimal_stop to avoid memory loss with -iTO switch
+
+  Revision 1.37  1999/11/06 14:34:20  peter
     * truncated log to 20 revs
 
   Revision 1.36  1999/10/12 21:20:41  florian