summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS5
-rw-r--r--Modules/mmapmodule.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 7eac644..aa9020e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -29,6 +29,11 @@ Library
- Issue #10464: netrc now correctly handles lines with embedded '#' characters.
+Extensions
+----------
+
+- Issue #678250: Make mmap flush a noop on ACCESS_READ and ACCESS_COPY.
+
Tests
-----
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index 0005113..79a8a68 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -125,7 +125,8 @@ mmap_object_dealloc(mmap_object *m_obj)
if (m_obj->fd >= 0)
(void) close(m_obj->fd);
if (m_obj->data!=NULL) {
- msync(m_obj->data, m_obj->size, MS_SYNC);
+ if (m_obj->access != ACCESS_READ && m_obj->access != ACCESS_COPY)
+ msync(m_obj->data, m_obj->size, MS_SYNC);
munmap(m_obj->data, m_obj->size);
}
#endif /* UNIX */
@@ -570,6 +571,10 @@ mmap_flush_method(mmap_object *self, PyObject *args)
PyErr_SetString(PyExc_ValueError, "flush values out of range");
return NULL;
}
+
+ if (self->access == ACCESS_READ || self->access == ACCESS_COPY)
+ return PyLong_FromLong(0);
+
#ifdef MS_WINDOWS
return PyLong_FromLong((long) FlushViewOfFile(self->data+offset, size));
#elif defined(UNIX)