Issue #5282: Fixed mmap resize on 32bit windows and unix. When offset > 0,
The file was resized to wrong size.
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index df2c058..fad60d1 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -444,7 +444,7 @@
off_lo = (DWORD)(self->offset & 0xFFFFFFFF);
#else
newSizeHigh = 0;
- newSizeLow = (DWORD)new_size;
+ newSizeLow = (DWORD)(self->offset + new_size);
off_hi = 0;
off_lo = (DWORD)self->offset;
#endif
@@ -490,7 +490,7 @@
} else {
void *newmap;
- if (ftruncate(self->fd, new_size) == -1) {
+ if (ftruncate(self->fd, self->offset + new_size) == -1) {
PyErr_SetFromErrno(mmap_module_error);
return NULL;
}