]> granicus.if.org Git - python/commitdiff
Merged revisions 85678 via svnmerge from
authorR. David Murray <rdmurray@bitdance.com>
Sat, 11 Dec 2010 02:13:04 +0000 (02:13 +0000)
committerR. David Murray <rdmurray@bitdance.com>
Sat, 11 Dec 2010 02:13:04 +0000 (02:13 +0000)
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.
........

Misc/NEWS
Modules/mmapmodule.c

index 0481ddc567624772a8cb901853af0c672c7a3386..2fa61044b914c340f1a52e6e6da7374b3199dd0f 100644 (file)
--- 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
 -----
 
index b53aae1341f57ae1516dc0f5e7e6b3e79e262445..d6d16011c682e542cac0c15b988949f8b2d6ef1e 100644 (file)
@@ -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)