From 01b9da870b8501395125f3181cb5893da39831bb Mon Sep 17 00:00:00 2001
From: sfan5 <sfan5@live.de>
Date: Sat, 23 Sep 2017 17:05:55 +0200
Subject: Fix blocks written by vmanip not being marked as modified

This bug can be triggered by e.g. calling minetest.place_schematic()
and stopping the server immediately afterwards.
---
 src/map.cpp    | 1 +
 src/mapblock.h | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/map.cpp b/src/map.cpp
index 3b02ac02f..0c57d6a8a 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -2737,6 +2737,7 @@ void MMVManip::blitBackAll(std::map<v3s16, MapBlock*> *modified_blocks,
 			continue;
 
 		block->copyFrom(*this);
+		block->raiseModified(MOD_STATE_WRITE_NEEDED, MOD_REASON_VMANIP);
 
 		if(modified_blocks)
 			(*modified_blocks)[p] = block;
diff --git a/src/mapblock.h b/src/mapblock.h
index 8816dc817..1ccaccaef 100644
--- a/src/mapblock.h
+++ b/src/mapblock.h
@@ -122,7 +122,8 @@ public:
 #define MOD_REASON_STATIC_DATA_REMOVED       (1 << 16)
 #define MOD_REASON_STATIC_DATA_CHANGED       (1 << 17)
 #define MOD_REASON_EXPIRE_DAYNIGHTDIFF       (1 << 18)
-#define MOD_REASON_UNKNOWN                   (1 << 19)
+#define MOD_REASON_VMANIP                    (1 << 19)
+#define MOD_REASON_UNKNOWN                   (1 << 20)
 
 ////
 //// MapBlock itself
-- 
cgit v1.2.3