diff options
| author | Georg Brandl <georg@python.org> | 2006-08-14 21:42:58 +0000 |
|---|---|---|
| committer | Georg Brandl <georg@python.org> | 2006-08-14 21:42:58 +0000 |
| commit | 28930e418b370237f3344bcdeee4b15fb4383f4d (patch) | |
| tree | 9355f0d5a14e18103a02651dc4f6b84e32a58031 /Modules | |
| parent | 429036701c9e656af92c3b388b0b24cc1a0f08cd (diff) | |
| download | cpython-git-28930e418b370237f3344bcdeee4b15fb4383f4d.tar.gz | |
Patch #1535500: fix segfault in BZ2File.writelines and make sure it
raises the correct exceptions.
(backport from rev. 51285)
Diffstat (limited to 'Modules')
| -rw-r--r-- | Modules/bz2module.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/Modules/bz2module.c b/Modules/bz2module.c index 91710686a0..8d9eaf40a9 100644 --- a/Modules/bz2module.c +++ b/Modules/bz2module.c @@ -812,12 +812,12 @@ BZ2File_write(BZ2FileObject *self, PyObject *args) case MODE_CLOSED: PyErr_SetString(PyExc_ValueError, "I/O operation on closed file"); - goto cleanup;; + goto cleanup; default: PyErr_SetString(PyExc_IOError, "file is not ready for writing"); - goto cleanup;; + goto cleanup; } self->f_softspace = 0; @@ -861,6 +861,21 @@ BZ2File_writelines(BZ2FileObject *self, PyObject *seq) int bzerror; ACQUIRE_LOCK(self); + switch (self->mode) { + case MODE_WRITE: + break; + + case MODE_CLOSED: + PyErr_SetString(PyExc_ValueError, + "I/O operation on closed file"); + goto error; + + default: + PyErr_SetString(PyExc_IOError, + "file is not ready for writing"); + goto error; + } + islist = PyList_Check(seq); if (!islist) { iter = PyObject_GetIter(seq); @@ -985,7 +1000,6 @@ BZ2File_seek(BZ2FileObject *self, PyObject *args) size_t readsize; int chunksize; int bzerror; - int rewind = 0; PyObject *ret = NULL; if (!PyArg_ParseTuple(args, "O|i:seek", &offobj, &where)) |
