From 00e5607a2c26a8d82b7e021528810cf8def3c5cd Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 8 Nov 2007 16:25:58 -0600 Subject: [PATCH] Fix a bug in delete-node where the prev pointer wasn't getting set right Add more unit tests --- core/dlists/dlists-tests.factor | 3 +++ core/dlists/dlists.factor | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/dlists/dlists-tests.factor b/core/dlists/dlists-tests.factor index f4482d680d..2d24dbae4c 100644 --- a/core/dlists/dlists-tests.factor +++ b/core/dlists/dlists-tests.factor @@ -59,3 +59,6 @@ IN: temporary [ 0 ] [ dlist-length ] unit-test [ 1 ] [ 1 over push-front dlist-length ] unit-test [ 0 ] [ 1 over push-front dup pop-front* dlist-length ] unit-test + +[ 4 ] [ 1 over push-back 2 over push-back 3 over push-back 4 over push-back 5 over push-back [ 3 = ] over delete-node drop dlist-front dlist-node-next dlist-node-next dlist-node-obj ] unit-test +[ 2 ] [ 1 over push-back 2 over push-back 3 over push-back 4 over push-back 5 over push-back [ 3 = ] over delete-node drop dlist-front dlist-node-next dlist-node-next dlist-node-prev dlist-node-obj ] unit-test diff --git a/core/dlists/dlists.factor b/core/dlists/dlists.factor index 890185d4c4..f18665b38e 100644 --- a/core/dlists/dlists.factor +++ b/core/dlists/dlists.factor @@ -107,7 +107,8 @@ PRIVATE> { { [ 2dup >r dlist-front r> = ] [ drop pop-front* ] } { [ 2dup >r dlist-back r> = ] [ drop pop-back* ] } - { [ t ] [ dup dlist-node-prev swap dlist-node-next set-prev-when + { [ t ] [ dup dlist-node-prev over dlist-node-next set-prev-when + dup dlist-node-next swap dlist-node-prev set-next-when dec-length ] } } cond ;