use setup_call_cleanup/3 for with_locals

as suggested by triska
This commit is contained in:
Skgland
2025-08-10 01:57:28 +02:00
committed by Bennet Bleßmann
parent 3e929511bb
commit cd777294b9

View File

@@ -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) :-