summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/txr/stdlib/optimize.tl5
1 files changed, 4 insertions, 1 deletions
diff --git a/share/txr/stdlib/optimize.tl b/share/txr/stdlib/optimize.tl
index 83abaa1e..b011c568 100644
--- a/share/txr/stdlib/optimize.tl
+++ b/share/txr/stdlib/optimize.tl
@@ -107,7 +107,10 @@
(set bl.next nxbl.next)
(set bl.links nxbl.links)
(set bb.list (remq nxbl bb.list))
- (del [bb.hash nxbl.label]))))
+ (del [bb.hash nxbl.label])
+ (each ((nx bl.links))
+ (upd nx.rlinks (remq nxbl))
+ (pushnew bl nx.rlinks)))))
(defmacro rewrite-case (sym list . cases)
^(rewrite (lambda (,sym)