Explorar o código

* fixed flow control handling in case of empty try-blocks and in case of
no default exception catching block

git-svn-id: branches/jvmbackend@18576 -

Jonas Maebe %!s(int64=14) %!d(string=hai) anos
pai
achega
8ec21eb426
Modificáronse 1 ficheiros con 6 adicións e 3 borrados
  1. 6 3
      compiler/jvm/njvmflw.pas

+ 6 - 3
compiler/jvm/njvmflw.pas

@@ -131,7 +131,6 @@ implementation
          { try block }
          { set control flow labels for the try block }
 
-         flowcontrol:=[fc_inflowcontrol];
          hlcg.a_label(current_asmdata.CurrAsmList,begintrylabel);
          secondpass(left);
          hlcg.a_label(current_asmdata.CurrAsmList,endtrylabel);
@@ -177,7 +176,9 @@ implementation
              current_except_loc.loc:=LOC_INVALID;
 
              exceptflowcontrol:=flowcontrol;
-           end;
+           end
+         else
+           exceptflowcontrol:=flowcontrol;
          hlcg.a_label(current_asmdata.CurrAsmList,endexceptlabel);
 
          { restore all saved labels }
@@ -321,7 +322,9 @@ implementation
                 exit;
               { reason: no exception occurred }
               hlcg.a_load_const_reg(current_asmdata.CurrAsmList,s32inttype,0,reasonbuf);
-           end;
+           end
+         else
+           tryflowcontrol:=[fc_inflowcontrol];
 
          { begin of the finally code }
          hlcg.a_label(current_asmdata.CurrAsmList,finallylabel);