diff --git a/Misc/NEWS b/Misc/NEWS --- a/Misc/NEWS +++ b/Misc/NEWS @@ -1259,6 +1259,8 @@ Extension Modules ----------------- +- Bug #2122: flush method of mmap objects now returns None and raises + an Exception on errors. - Patch #1506171: added operator.methodcaller(). diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -534,7 +534,12 @@ return NULL; } #ifdef MS_WINDOWS - return PyInt_FromLong((long) FlushViewOfFile(self->data+offset, size)); + if (!FlushViewOfFile(self->data+offset, size)) { + PyErr_SetFromWindowsErr(GetLastError()); + return NULL; + } + Py_INCREF(Py_None); + return Py_None; #elif defined(UNIX) /* XXX semantics of return value? */ /* XXX flags for msync? */ @@ -542,7 +547,8 @@ PyErr_SetFromErrno(mmap_module_error); return NULL; } - return PyInt_FromLong(0); + Py_INCREF(Py_None); + return Py_None; #else PyErr_SetString(PyExc_ValueError, "flush not supported on this system"); return NULL;