From fd0a780a76cfe921a10bfc88fe626da3aa896f26 Mon Sep 17 00:00:00 2001 From: Arpad Ryszka Date: Sun, 6 Dec 2020 22:36:09 +0100 Subject: [PATCH] protect node slices --- reflect.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/reflect.go b/reflect.go index 1b8d3ea..0809208 100644 --- a/reflect.go +++ b/reflect.go @@ -281,10 +281,11 @@ func checkPending(p *pending, r reflect.Value) (applyRef func(node) node, ref no applyRef = func(n node) node { nr = p.values[key] if nr.refCount > 0 { - n.parts = append( - []interface{}{"r", nr.id, "="}, - n.parts..., - ) + def := []interface{}{"r", nr.id, "="} + pp := make([]interface{}, len(def)+len(n.parts)) + copy(pp, def) + copy(pp[len(def):], n.parts) + n.parts = pp } delete(p.values, key)