|
|
@@ -127,10 +127,10 @@ func growOne(slice *sliceHeader, sliceType reflect.Type, elementType reflect.Typ
|
|
|
newVal := reflect.MakeSlice(sliceType, newLen, newCap)
|
|
|
dst := unsafe.Pointer(newVal.Pointer())
|
|
|
// copy old array into new array
|
|
|
- originalBytesCount := uintptr(slice.Len) * elementType.Size()
|
|
|
- srcPtr := (*[1 << 49]byte)(slice.Data)
|
|
|
- dstPtr := (*[1 << 49]byte)(dst)
|
|
|
- copy(dstPtr[:originalBytesCount], srcPtr[:originalBytesCount])
|
|
|
+ originalBytesCount := slice.Len * int(elementType.Size())
|
|
|
+ srcSliceHeader := (unsafe.Pointer)(&sliceHeader{slice.Data, originalBytesCount, originalBytesCount})
|
|
|
+ dstSliceHeader := (unsafe.Pointer)(&sliceHeader{dst, originalBytesCount, originalBytesCount})
|
|
|
+ copy(*(*[]byte)(dstSliceHeader), *(*[]byte)(srcSliceHeader))
|
|
|
slice.Data = dst
|
|
|
slice.Len = newLen
|
|
|
slice.Cap = newCap
|