@@ -151,10 +151,12 @@ func generateCache(dest []uint32, epoch uint64, seed []byte) {
151
151
logFn ("Generated ethash verification cache" , "elapsed" , common .PrettyDuration (elapsed ))
152
152
}()
153
153
// Convert our destination slice to a byte buffer
154
- header := * (* reflect .SliceHeader )(unsafe .Pointer (& dest ))
155
- header .Len *= 4
156
- header .Cap *= 4
157
- cache := * (* []byte )(unsafe .Pointer (& header ))
154
+ var cache []byte
155
+ cacheHdr := (* reflect .SliceHeader )(unsafe .Pointer (& cache ))
156
+ dstHdr := (* reflect .SliceHeader )(unsafe .Pointer (& dest ))
157
+ cacheHdr .Data = dstHdr .Data
158
+ cacheHdr .Len = dstHdr .Len * 4
159
+ cacheHdr .Cap = dstHdr .Cap * 4
158
160
159
161
// Calculate the number of theoretical rows (we'll store in one buffer nonetheless)
160
162
size := uint64 (len (cache ))
@@ -283,10 +285,12 @@ func generateDataset(dest []uint32, epoch uint64, cache []uint32) {
283
285
swapped := ! isLittleEndian ()
284
286
285
287
// Convert our destination slice to a byte buffer
286
- header := * (* reflect .SliceHeader )(unsafe .Pointer (& dest ))
287
- header .Len *= 4
288
- header .Cap *= 4
289
- dataset := * (* []byte )(unsafe .Pointer (& header ))
288
+ var dataset []byte
289
+ datasetHdr := (* reflect .SliceHeader )(unsafe .Pointer (& dataset ))
290
+ destHdr := (* reflect .SliceHeader )(unsafe .Pointer (& dest ))
291
+ datasetHdr .Data = destHdr .Data
292
+ datasetHdr .Len = destHdr .Len * 4
293
+ datasetHdr .Cap = destHdr .Cap * 4
290
294
291
295
// Generate the dataset on many goroutines since it takes a while
292
296
threads := runtime .NumCPU ()
0 commit comments