]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix restoring from pdumper file on MS-Windows 9X
authorEli Zaretskii <eliz@gnu.org>
Sat, 11 Sep 2021 06:56:27 +0000 (09:56 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 11 Sep 2021 06:56:27 +0000 (09:56 +0300)
* src/pdumper.c (dump_map_file_w32): Use PAGE_WRITECOPY flag when
calling CreateFileMapping for DUMP_MEMORY_ACCESS_READWRITE access,
as that is required by Windows 9X.  (Bug#50453)

src/pdumper.c

index 7730ea3d0614826a1e9154279f67a65516d82291..2291fced5d749af96b049145a0d26c6297e17526 100644 (file)
@@ -4537,15 +4537,28 @@ dump_map_file_w32 (void *base, int fd, off_t offset, size_t size,
   uint32_t offset_low = (uint32_t) (full_offset & 0xffffffff);
 
   int error;
+  DWORD protect;
   DWORD map_access;
 
   file = (HANDLE) _get_osfhandle (fd);
   if (file == INVALID_HANDLE_VALUE)
     goto out;
 
+  switch (protection)
+    {
+    case DUMP_MEMORY_ACCESS_READWRITE:
+      protect = PAGE_WRITECOPY;        /* for Windows 9X */
+      break;
+    default:
+    case DUMP_MEMORY_ACCESS_NONE:
+    case DUMP_MEMORY_ACCESS_READ:
+      protect = PAGE_READONLY;
+      break;
+    }
+
   section = CreateFileMapping (file,
                               /*lpAttributes=*/NULL,
-                              PAGE_READONLY,
+                              protect,
                               /*dwMaximumSizeHigh=*/0,
                               /*dwMaximumSizeLow=*/0,
                               /*lpName=*/NULL);