Issue #11391: Writing to a mmap object created with
`mmap.PROT_READ|mmap.PROT_EXEC` would segfault instead of raising a
TypeError.  Patch by Charles-François Natali.
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py
index 047d700..bc99054 100644
--- a/Lib/test/test_mmap.py
+++ b/Lib/test/test_mmap.py
@@ -239,6 +239,14 @@
                               prot=mmap.PROT_READ, access=mmap.ACCESS_WRITE)
             f.close()
 
+            # Try writing with PROT_EXEC and without PROT_WRITE
+            prot = mmap.PROT_READ | getattr(mmap, 'PROT_EXEC', 0)
+            with open(TESTFN, "r+b") as f:
+                m = mmap.mmap(f.fileno(), mapsize, prot=prot)
+                self.assertRaises(TypeError, m.write, b"abcdef")
+                self.assertRaises(TypeError, m.write_byte, 0)
+                m.close()
+
     def test_bad_file_desc(self):
         # Try opening a bad file descriptor...
         self.assertRaises(mmap.error, mmap.mmap, -2, 4096)