[pypy-svn] r78491 - in pypy/branch/fast-forward/pypy/rlib: . test
afa at codespeak.net
afa at codespeak.net
Fri Oct 29 23:28:58 CEST 2010
Author: afa
Date: Fri Oct 29 23:28:57 2010
New Revision: 78491
Modified:
pypy/branch/fast-forward/pypy/rlib/rmmap.py
pypy/branch/fast-forward/pypy/rlib/test/test_rmmap.py
Log:
Implement fix for CPython bug #2111:
mmap segfaults when trying to write a block opened with PROT_READ
Modified: pypy/branch/fast-forward/pypy/rlib/rmmap.py
==============================================================================
--- pypy/branch/fast-forward/pypy/rlib/rmmap.py (original)
+++ pypy/branch/fast-forward/pypy/rlib/rmmap.py Fri Oct 29 23:28:57 2010
@@ -591,6 +591,9 @@
else:
raise RValueError("mmap invalid access parameter.")
+ if prot == PROT_READ:
+ access = ACCESS_READ
+
# check file size
try:
st = os.fstat(fd)
Modified: pypy/branch/fast-forward/pypy/rlib/test/test_rmmap.py
==============================================================================
--- pypy/branch/fast-forward/pypy/rlib/test/test_rmmap.py (original)
+++ pypy/branch/fast-forward/pypy/rlib/test/test_rmmap.py Fri Oct 29 23:28:57 2010
@@ -229,6 +229,16 @@
interpret(func, [f.fileno()])
f.close()
+ def test_write_readonly(self):
+ if os.name == "nt":
+ skip("Needs PROT_READ")
+ f = open(self.tmpname + "l", "w+")
+ f.write("foobar")
+ f.flush()
+ m = mmap.mmap(f.fileno(), 6, prot=mmap.PROT_READ)
+ raises(RTypeError, m.write, "foo")
+ f.close()
+
def test_size(self):
f = open(self.tmpname + "l", "w+")
More information about the Pypy-commit
mailing list