Index: Modules/mmapmodule.c =================================================================== --- Modules/mmapmodule.c (revision 77420) +++ Modules/mmapmodule.c (working copy) @@ -110,8 +110,10 @@ mmap_object_dealloc(mmap_object *m_obj) { #ifdef MS_WINDOWS - if (m_obj->data != NULL) + if (m_obj->data != NULL) { + FlushViewOfFile (m_obj->data, m_obj->size); UnmapViewOfFile (m_obj->data); + } if (m_obj->map_handle != NULL) CloseHandle (m_obj->map_handle); if (m_obj->file_handle != INVALID_HANDLE_VALUE) @@ -144,6 +146,7 @@ TODO - should we check for errors in the close operations??? */ if (self->data != NULL) { + FlushViewOfFile (self->data, self->size); UnmapViewOfFile(self->data); self->data = NULL; } @@ -162,6 +165,7 @@ (void) close(self->fd); self->fd = -1; if (self->data != NULL) { + msync(self->data, self->size, MS_SYNC); munmap(self->data, self->size); self->data = NULL; }