diff options
Diffstat (limited to 'pkg/state')
-rw-r--r-- | pkg/state/encode.go | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/pkg/state/encode.go b/pkg/state/encode.go index 577aaf051..fe8512bbf 100644 --- a/pkg/state/encode.go +++ b/pkg/state/encode.go @@ -119,9 +119,10 @@ func (es *encodeState) register(obj reflect.Value) uint64 { if size := typ.Size(); size > 0 { r := addrRange{addr, addr + size} if !es.values.IsEmptyRange(r) { - panic(fmt.Errorf("overlapping objects: [new object] %#v [existing object] %#v", obj.Interface(), es.values.FindSegment(addr).Value().Elem().Interface())) + old := es.values.LowerBoundSegment(addr).Value().Interface().(recoverable) + panic(fmt.Errorf("overlapping objects: [new object] %#v [existing object path] %s", obj.Interface(), old.path())) } - es.values.Add(r, obj) + es.values.Add(r, reflect.ValueOf(es.recoverable.copy())) } } else { // Push back the map itself; when maps are encoded from the |