New submission from Ralf Schmitt: mmap.flush returns the result of the call to FlushViewOfFile as an integer, and does not check for errors. On unix it does check for errors. The function should return None and raise an exception if an error occurs... This bug can lead to data loss...
Here's the current version of that function: static PyObject * mmap_flush_method(mmap_object *self, PyObject *args) { Py_ssize_t offset = 0; Py_ssize_t size = self->size; CHECK_VALID(NULL); if (!PyArg_ParseTuple(args, "|nn:flush", &offset, &size)) return NULL; if ((size_t)(offset + size) > self->size) { PyErr_SetString(PyExc_ValueError, "flush values out of range"); return NULL; } #ifdef MS_WINDOWS return PyInt_FromLong((long) FlushViewOfFile(self->data+offset, size)); #elif defined(UNIX) /* XXX semantics of return value? */ /* XXX flags for msync? */ if (-1 == msync(self->data + offset, size, MS_SYNC)) { PyErr_SetFromErrno(mmap_module_error); return NULL; } return PyInt_FromLong(0); #else PyErr_SetString(PyExc_ValueError, "flush not supported on this system"); return NULL; #endif } ---------- components: Library (Lib) messages: 62427 nosy: schmir severity: major status: open title: mmap.flush does not check for errors on windows type: behavior versions: Python 2.5, Python 2.6, Python 3.0 __________________________________ Tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue2122> __________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com