[Python-checkins] r51285 - in python/trunk: Lib/test/test_bz2.py Misc/NEWS Modules/bz2module.c
georg.brandl
python-checkins at python.org
Mon Aug 14 23:42:56 CEST 2006
Author: georg.brandl
Date: Mon Aug 14 23:42:55 2006
New Revision: 51285
Modified:
python/trunk/Lib/test/test_bz2.py
python/trunk/Misc/NEWS
python/trunk/Modules/bz2module.c
Log:
Patch #1535500: fix segfault in BZ2File.writelines and make sure it
raises the correct exceptions.
Modified: python/trunk/Lib/test/test_bz2.py
==============================================================================
--- python/trunk/Lib/test/test_bz2.py (original)
+++ python/trunk/Lib/test/test_bz2.py Mon Aug 14 23:42:55 2006
@@ -166,6 +166,8 @@
sio = StringIO(self.TEXT)
bz2f.writelines(sio.readlines())
bz2f.close()
+ # patch #1535500
+ self.assertRaises(ValueError, bz2f.writelines, ["a"])
f = open(self.filename, 'rb')
self.assertEqual(self.decompress(f.read()), self.TEXT)
f.close()
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Mon Aug 14 23:42:55 2006
@@ -79,6 +79,9 @@
Extension Modules
-----------------
+- Patch #1535500: fix segfault in BZ2File.writelines and make sure it
+ raises the correct exceptions.
+
- Patch # 1536908: enable building ctypes on OpenBSD/AMD64. The
'-no-stack-protector' compiler flag for OpenBSD has been removed.
Modified: python/trunk/Modules/bz2module.c
==============================================================================
--- python/trunk/Modules/bz2module.c (original)
+++ python/trunk/Modules/bz2module.c Mon Aug 14 23:42:55 2006
@@ -812,12 +812,12 @@
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 @@
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);
More information about the Python-checkins
mailing list