]> granicus.if.org Git - python/commitdiff
Merged revisions 85678 via svnmerge from
authorR. David Murray <rdmurray@bitdance.com>
Sat, 11 Dec 2010 02:05:32 +0000 (02:05 +0000)
committerR. David Murray <rdmurray@bitdance.com>
Sat, 11 Dec 2010 02:05:32 +0000 (02:05 +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 7eac6445c149fc1aa3ec0c8a4f7b98d468c70df2..aa9020edd6293b7ce99e97113941ceb68d527437 100644 (file)
--- 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
 -----
 
index 00051135d0846752d5696f77dfdd1157c5d6afb6..79a8a68ddeb4e5385d42db3ae5f63f339f1353b3 100644 (file)
@@ -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)