diff --git a/consensus/ethash/ethash.go b/consensus/ethash/ethash.go index d284e7b00b61270618c539932e7223c41572dad7..b028f50e69dbb45827b57e6f3caee07f4089366d 100644 --- a/consensus/ethash/ethash.go +++ b/consensus/ethash/ethash.go @@ -130,13 +130,16 @@ func memoryMapAndGenerate(path string, size uint64, generator func(buffer []uint data := buffer[len(dumpMagic):] generator(data) - if err := mem.Flush(); err != nil { - mem.Unmap() - dump.Close() + if err := mem.Unmap(); err != nil { + return nil, nil, nil, err + } + if err := dump.Close(); err != nil { + return nil, nil, nil, err + } + if err := os.Rename(temp, path); err != nil { return nil, nil, nil, err } - os.Rename(temp, path) - return dump, mem, data, nil + return memoryMap(path) } // cache wraps an ethash cache with some metadata to allow easier concurrent use.