diff --git a/src/hyperfiddle/electric/impl/mount_point.cljc b/src/hyperfiddle/electric/impl/mount_point.cljc index 3667530d5..ddfebab61 100644 --- a/src/hyperfiddle/electric/impl/mount_point.cljc +++ b/src/hyperfiddle/electric/impl/mount_point.cljc @@ -181,8 +181,10 @@ Mounting a block generates a grow for each active item having this block's frame ^objects bj (aget buffer j)] (aset buffer i bj) (aset buffer j bi) - (aset bi block-slot-index j) - (aset bj block-slot-index i))) + (when-not (nil? bi) + (aset bi block-slot-index j)) + (when-not (nil? bj) + (aset bj block-slot-index i)))) (defn block-index [^objects call id] (let [^objects reader (aget call call-slot-reader) @@ -542,9 +544,11 @@ Mounting a block generates a grow for each active item having this block's frame (if-some [index (block-index call k1)] (p/compose (p/split-long-swap index - (block-weight (aget buffer k1)) + (if-some [b (aget buffer k1)] + (block-weight b) 0) (weight-between call k1 k2) - (block-weight (aget buffer k2))) + (if-some [b (aget buffer k2)] + (block-weight b) 0)) q) q)))))] (d/combine diff {:grow 0 diff --git a/test/hyperfiddle/electric_de_test.cljc b/test/hyperfiddle/electric_de_test.cljc index 3ff456072..dfd72bf6c 100644 --- a/test/hyperfiddle/electric_de_test.cljc +++ b/test/hyperfiddle/electric_de_test.cljc @@ -2273,6 +2273,12 @@ tap tap) % := (range 20) (reset! !xs (range 10)) - % := (range 10)) + % := (range 10) + (reset! !xs (range 1)) + % := (range 1) + (reset! !xs (reverse (range 2))) + % := (reverse (range 2)) + + ) ) \ No newline at end of file