That looks sensible. Sorry to waste your time on this. I'm glad it states the for-loop variable will be left undefined - that's good enough documentation for me.
I wouldn't call it a quick fix... more of fixing an oversight, since I can see the trick of using Result as the for-counter being very easily overlooked. Of course, the perfect fix is only counting "exitn" if the for-loop counter is Result. One to test for later. Gareth aka. Kit On Fri 18/05/18 14:40 , Martok list...@martoks-place.de sent: > Citation: "If the loop was terminated prematurely with an exception or a > break statement, the loop variable retains the value it had when the > loop was exited." As a quick fix, not unrolling loops left with exit at least fixes this specific situation. This still leaves exceptions raised, but IIRC the handlers don't restore context anyways, we might be okay? diff --git a/compiler/optloop.pas b/compiler/optloop.pas index 46039ffc5a..dc714ea2cc 100644 --- a/compiler/optloop.pas +++ b/compiler/optloop.pas @@ -76,7 +76,7 @@ unit optloop; function checkbreakcontinue(var n:tnode; arg: pointer): foreachnoderesult; begin - if n.nodetype in [breakn,continuen] then + if n.nodetype in [breakn,continuen,exitn] then result:=fen_norecurse_true else result:=fen_false; I'll be running this on today's snapshot, see if anything else remains. -- Regards, Martok _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org [1] http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel [2]" target="_blank">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel Links: ------ [1] mailto:fpc-devel@lists.freepascal.org [2] http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel