@@ -322,7 +322,7 @@ thtk_io_file_map(
322
322
thtk_error_new (error , "mmap failed: %s" , strerror (errno ));
323
323
return NULL ;
324
324
}
325
- if (mmap (map + pagesize , vcount , PROT_READ , MAP_PRIVATE |MAP_FIXED , fileno_unlocked (private -> stream ), voffset ) == MAP_FAILED ) {
325
+ if (mmap (map + pagesize , vcount , PROT_READ | PROT_WRITE , MAP_PRIVATE |MAP_FIXED , fileno_unlocked (private -> stream ), voffset ) == MAP_FAILED ) {
326
326
munmap (map , pagesize + vcount );
327
327
thtk_error_new (error , "mmap failed: %s" , strerror (errno ));
328
328
return NULL ;
@@ -363,7 +363,7 @@ thtk_io_file_map(
363
363
li .QuadPart += vcount ;
364
364
HANDLE map = CreateFileMappingW (
365
365
(HANDLE )_get_osfhandle (fileno_unlocked (private -> stream )),
366
- NULL , PAGE_READONLY , li .HighPart , li .LowPart , NULL );
366
+ NULL , PAGE_WRITECOPY , li .HighPart , li .LowPart , NULL );
367
367
if (!map ) {
368
368
char * buf ;
369
369
FormatMessageA (
@@ -374,7 +374,7 @@ thtk_io_file_map(
374
374
return NULL ;
375
375
}
376
376
li .QuadPart = voffset ;
377
- unsigned char * view = MapViewOfFile (map , FILE_MAP_READ , li .HighPart , li .LowPart , vcount );
377
+ unsigned char * view = MapViewOfFile (map , FILE_MAP_COPY , li .HighPart , li .LowPart , vcount );
378
378
if (!view ) {
379
379
char * buf ;
380
380
FormatMessageA (
0 commit comments