From: Mark Thom Date: Wed, 3 Mar 2021 20:56:13 +0000 (-0700) Subject: catch exceptions thrown from initialization goals (#852) X-Git-Tag: v0.9.0~139 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=d3612e956e745e4817e3263c8d8c355f072ea018;p=scryer-prolog.git catch exceptions thrown from initialization goals (#852) --- diff --git a/src/loader.pl b/src/loader.pl index 4bd88e37..52f51d7d 100644 --- a/src/loader.pl +++ b/src/loader.pl @@ -105,23 +105,23 @@ file_load(_, _). file_load(Stream, Path, Evacuable) :- create_file_load_context(Stream, Path, Evacuable), - catch(loader:load_loop(Stream, Evacuable), + catch((loader:load_loop(Stream, Evacuable), + loader:run_initialization_goals), E, builtins:(loader:unload_evacuable(Evacuable), loader:'$print_message_and_fail'(E), builtins:throw(E))), - run_initialization_goals, '$pop_load_context'. load(Stream) :- create_load_context(Stream, Evacuable), - catch(loader:load_loop(Stream, Evacuable), + catch((loader:load_loop(Stream, Evacuable), + loader:run_initialization_goals), E, builtins:(loader:unload_evacuable(Evacuable), loader:'$print_message_and_fail'(E), builtins:throw(E))), - run_initialization_goals, '$pop_load_context', false. %% Clear the heap. load(_).