]> Repositorios git - scryer-prolog.git/commitdiff
FIXED: correct propagation of tuples_in/2 (#929)
authorMarkus Triska <[email protected]>
Thu, 13 May 2021 19:48:18 +0000 (21:48 +0200)
committerMarkus Triska <[email protected]>
Thu, 13 May 2021 19:48:43 +0000 (21:48 +0200)
Many thanks to @notoria for producing a very short test case.

src/lib/clpz.pl

index 8ee53c0d90eaa511917b817989351c33b1268aee..90a4045feff1630ca001bac3de5ef57f342ebe46 100644 (file)
@@ -3,7 +3,7 @@
     Author:        Markus Triska
     E-mail:        [email protected]
     WWW:           https://www.metalevel.at
-    Copyright (C): 2016-2020 Markus Triska
+    Copyright (C): 2016-2021 Markus Triska
 
     This library provides CLP(ℤ):
 
@@ -4283,13 +4283,13 @@ tuples_in(Tuples, Relation) :-
         must_be(list(list), Tuples),
         maplist(maplist(fd_variable), Tuples),
         must_be(list(list(integer)), Relation),
-        maplist(relation_tuple(Relation), Tuples),
-        do_queue.
+        maplist(relation_tuple(Relation), Tuples).
 
 relation_tuple(Relation, Tuple) :-
         relation_unifiable(Relation, Tuple, Us, _, _),
         (   ground(Tuple) -> memberchk(Tuple, Relation)
-        ;   phrase(tuple_domain(Tuple, Us), _),
+        ;   new_queue(Q),
+            phrase((tuple_domain(Tuple, Us),do_queue), [Q], _),
             (   Tuple = [_,_|_] -> tuple_freeze(Tuple, Us)
             ;   true
             )