From b5abd1615376bc7a66a16c5156a3a4cfc89eb54b Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Sun, 5 Feb 2006 06:00:54 +0000 Subject: Backport: Patch #1407135, bug #1424041: mmap.mmap(-1, size, ...) can return anonymous memory again on Unix. --- Misc/NEWS | 3 +++ Modules/mmapmodule.c | 15 ++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index e23712b..2b1cdbc 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -45,6 +45,9 @@ Core and builtins Extension Modules ----------------- +- Patch #1407135, bug #1424041: mmap.mmap(-1, size, ...) can return + anonymous memory again on Unix. + - Bug #1215432: in bsddb DB.associate() would crash when a DBError was supposed to be raised. diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index 9fd2ca4..8dcbe86 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -917,12 +917,17 @@ new_mmap_object(PyObject *self, PyObject *args, PyObject *kwdict) m_obj->data = NULL; m_obj->size = (size_t) map_size; m_obj->pos = (size_t) 0; - m_obj->fd = dup(fd); - if (m_obj->fd == -1) { - Py_DECREF(m_obj); - PyErr_SetFromErrno(mmap_module_error); - return NULL; + if (fd == -1) { + m_obj->fd = -1; + } else { + m_obj->fd = dup(fd); + if (m_obj->fd == -1) { + Py_DECREF(m_obj); + PyErr_SetFromErrno(mmap_module_error); + return NULL; + } } + m_obj->data = mmap(NULL, map_size, prot, flags, fd, 0); -- cgit v0.12