From: Skgland Date: Sat, 9 Aug 2025 23:57:28 +0000 (+0200) Subject: use setup_call_cleanup/3 for with_locals X-Git-Tag: v0.10.0~11^2~14 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=cd777294b990d8cab35d8c68fdb12616fe41e402;p=scryer-prolog.git use setup_call_cleanup/3 for with_locals as suggested by triska --- diff --git a/src/lib/ffi.pl b/src/lib/ffi.pl index ab981e82..86c7bdc9 100644 --- a/src/lib/ffi.pl +++ b/src/lib/ffi.pl @@ -54,6 +54,7 @@ And a new window should pop up! :- use_module(library(error)). :- use_module(library(format)). :- use_module(library(dcgs)). +:- use_module(library(iso_ext)). %% foreign_struct(+Name, +Elements). % @@ -144,9 +145,10 @@ array_type(ElemType, Len, ArrayType) :- with_locals(Locals, Goal) :- verify_locals(Locals), - allocate_locals(Locals), - ( catch(Goal, E, (deallocate_locals(Locals), throw(E))) -> deallocate_locals(Locals) - ; deallocate_locals(Locals), false + setup_call_cleanup( + allocate_locals(Locals), + Goal, + deallocate_locals(Locals) ). verify_locals(Locals) :-