From f166a0847af7d75f066966d7c9918f34bea80f99 Mon Sep 17 00:00:00 2001 From: Tom Szczesny Date: Mon, 29 Sep 2014 17:51:10 -0400 Subject: [PATCH] fix #253:more COW fixes --- kx.c | 2 +- tests.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/kx.c b/kx.c index bfdd851e..d979be67 100644 --- a/kx.c +++ b/kx.c @@ -844,7 +844,7 @@ Z K ex2(V*v, K k) //execute words --- all returns must be Ks. v: word list, k: if(1!=sva(v[1])){d=ex1(v+(offsetColon==v[1]?2:3),k,0,0,1); } // oom -- except it's ok for d to be 0 elsewhere d=bk(d)?0:d; - if(cirRef(*w,d) || (((*w)->t==6 && d) && (d->t==0 || d->t==5)) ){ + if(cirRef(*w,d) || (((*w)->t==6 && d) && (d->t==0 || d->t==5 || ABS(d->t)!=d->t)) ){ K x = d; if(x->c) {d=kclone(x); cd(x);} } diff --git a/tests.c b/tests.c index 7fb8e92d..5a0d0dee 100644 --- a/tests.c +++ b/tests.c @@ -551,7 +551,9 @@ Z I tests02() TC_("(.((`a;;);(`b;;);(`c;;));.((`a;;);(`b;;);(`c;;));.((`a;;);(`b;;);(`c;;)))", "a:b:c:(.k;.k;.k);b") // #43 case 7b TC_("(.((`a;;);(`b;;);(`c;;));.((`a;;);(`b;;);(`c;;));.((`a;;);(`b;;);(`c;;)))", "a:b:c:(.k;.k;.k);c") // #43 case 7c TC_("(.((`x;;);(`y;;));.((`x;;);(`y;;)))", "x:y:(.k;.k);x") // #43 case 8x - TC_("(.((`x;;);(`y;;));.((`x;;);(`y;;)))", "x:y:(.k;.k);y") // #43 case 8y + TC_("(.((`x;;);(`y;;));.((`x;;);(`y;;)))", "x:y:(.k;.k);y") // #43 case 8y + TC(3 4 5, x:2 3#!6; y:x; z:y[1]; y[1;1]:99; z) + TC(3.1 4.1 5.1, x:.1+2 3#!6; y:x; z:y[1]; y[1;1]:99.1; z) R 0; }