From: R. David Murray Date: Sat, 11 Dec 2010 02:13:04 +0000 (+0000) Subject: Merged revisions 85678 via svnmerge from X-Git-Tag: v2.7.2rc1~494 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2a4b3fce9d9976de0ae2e9f3e658a24b13b5fad6;p=python Merged revisions 85678 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r85678 | r.david.murray | 2010-10-17 21:14:06 -0400 (Sun, 17 Oct 2010) | 5 lines #678250: Make mmap flush a noop on ACCESS_READ and ACCESS_COPY. Patch by Sébastien Sablé. This solves a test_mmap failure on AIX. ........ --- diff --git a/Misc/NEWS b/Misc/NEWS index 0481ddc567..2fa61044b9 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -29,6 +29,11 @@ Library - Issue #10464: netrc now correctly handles lines with embedded '#' characters. +Extension Modules +----------------- + +- 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 b53aae1341..d6d16011c6 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -124,7 +124,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 */ @@ -559,6 +560,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 PyInt_FromLong((long) FlushViewOfFile(self->data+offset, size)); #elif defined(UNIX)