From 65e1095c3f86e46c9741b95e7f856312d74c7501 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= <peterke@gmail.com>
Date: Fri, 14 Apr 2017 11:32:47 +0300
Subject: [PATCH] consensus/ethash: close mmap before rename, windows
 limitation

---
 consensus/ethash/ethash.go | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/consensus/ethash/ethash.go b/consensus/ethash/ethash.go
index d284e7b00..b028f50e6 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.
-- 
GitLab