Browse Source

* fixed wrong temp. usage in generic exception handling

florian 21 years ago
parent
commit
03efd6e74b
1 changed files with 7 additions and 3 deletions
  1. 7 3
      compiler/ncgflw.pas

+ 7 - 3
compiler/ncgflw.pas

@@ -892,11 +892,10 @@ implementation
      end;
 
 
-    procedure try_free_exception(list : taasmoutput;var jmpbuf, envbuf, href : treference;
+    procedure try_free_exception(list : taasmoutput;var jmpbuf, envbuf : treference;const href : treference;
      a : aword ; endexceptlabel : tasmlabel; onlyfree : boolean);
      begin
          free_exception(list, jmpbuf, envbuf, href, a, endexceptlabel, onlyfree);
-         tg.ungettemp(list,href);
          tg.Ungettemp(list,jmpbuf);
          tg.ungettemp(list,envbuf);
      end;
@@ -1139,6 +1138,7 @@ implementation
               cg.g_exception_reason_load(exprasmlist,href);
               cg.a_jmp_always(exprasmlist,oldaktcontinuelabel);
            end;
+         tg.ungettemp(exprasmlist,href);
          cg.a_label(exprasmlist,endexceptlabel);
 
        errorexit:
@@ -1452,6 +1452,7 @@ implementation
                end;
            end;
          cg.a_label(exprasmlist,endfinallylabel);
+         tg.ungettemp(exprasmlist,href);
 
          current_procinfo.aktexitlabel:=oldaktexitlabel;
          if assigned(aktbreaklabel) then
@@ -1479,7 +1480,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.87  2003-12-06 01:15:22  florian
+  Revision 1.88  2004-01-01 17:23:16  florian
+    * fixed wrong temp. usage in generic exception handling
+
+  Revision 1.87  2003/12/06 01:15:22  florian
     * reverted Peter's alloctemp patch; hopefully properly
 
   Revision 1.86  2003/12/03 23:13:20  peter