Skip to content

Commit 3c0e576

Browse files
committed
fix #196 do not hard code 1 << 49
1 parent d394a13 commit 3c0e576

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

feature_reflect_slice.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,10 @@ func growOne(slice *sliceHeader, sliceType reflect.Type, elementType reflect.Typ
127127
newVal := reflect.MakeSlice(sliceType, newLen, newCap)
128128
dst := unsafe.Pointer(newVal.Pointer())
129129
// copy old array into new array
130-
originalBytesCount := uintptr(slice.Len) * elementType.Size()
131-
srcPtr := (*[1 << 49]byte)(slice.Data)
132-
dstPtr := (*[1 << 49]byte)(dst)
133-
copy(dstPtr[:originalBytesCount], srcPtr[:originalBytesCount])
130+
originalBytesCount := slice.Len * int(elementType.Size())
131+
srcSliceHeader := (unsafe.Pointer)(&sliceHeader{slice.Data, originalBytesCount, originalBytesCount})
132+
dstSliceHeader := (unsafe.Pointer)(&sliceHeader{dst, originalBytesCount, originalBytesCount})
133+
copy(*(*[]byte)(dstSliceHeader), *(*[]byte)(srcSliceHeader))
134134
slice.Data = dst
135135
slice.Len = newLen
136136
slice.Cap = newCap

jsoniter_interface_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
)
1212

1313
func Test_write_empty_interface_via_placeholder(t *testing.T) {
14+
fmt.Println(^uint(0) >> 1)
1415
should := require.New(t)
1516
m := map[uint32]interface{}{1:"hello"}
1617
inf := reflect.ValueOf(m).MapIndex(reflect.ValueOf(uint32(1))).Interface()

0 commit comments

Comments
 (0)