summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2005-06-03 19:47:00 (GMT)
committerGeorg Brandl <georg@python.org>2005-06-03 19:47:00 (GMT)
commit6b95f1d963d3fd2dcc2e84e83b514364e9f52006 (patch)
tree05fb825d6c8a3b148cd9462b7ab31d003de269d9
parent6d6917be00942734fc8665a2398bd06087115729 (diff)
downloadcpython-6b95f1d963d3fd2dcc2e84e83b514364e9f52006.zip
cpython-6b95f1d963d3fd2dcc2e84e83b514364e9f52006.tar.gz
cpython-6b95f1d963d3fd2dcc2e84e83b514364e9f52006.tar.bz2
Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly.
-rw-r--r--Lib/test/test_bz2.py10
-rw-r--r--Misc/NEWS2
-rw-r--r--Modules/bz2module.c4
3 files changed, 16 insertions, 0 deletions
diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py
index 7d844d8..fc8213f 100644
--- a/Lib/test/test_bz2.py
+++ b/Lib/test/test_bz2.py
@@ -235,6 +235,16 @@ class BZ2FileTest(BaseTest):
# "Test opening a nonexistent file"
self.assertRaises(IOError, BZ2File, "/non/existent")
+ def testModeU(self):
+ # Bug #1194181: bz2.BZ2File opened for write with mode "U"
+ self.createTempFile()
+ bz2f = BZ2File(self.filename, "U")
+ bz2f.close()
+ f = file(self.filename)
+ f.seek(0, 2)
+ self.assertEqual(f.tell(), len(self.DATA))
+ f.close()
+
class BZ2CompressorTest(BaseTest):
def testCompress(self):
# "Test BZ2Compressor.compress()/flush()"
diff --git a/Misc/NEWS b/Misc/NEWS
index 67ccb42..637ca2eb1 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -91,6 +91,8 @@ Core and builtins
Extension Modules
-----------------
+- Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly.
+
- Patch #1212117: os.stat().st_flags is now accessible as a attribute
if available on the platform.
diff --git a/Modules/bz2module.c b/Modules/bz2module.c
index 8a93cd9..b9874eb 100644
--- a/Modules/bz2module.c
+++ b/Modules/bz2module.c
@@ -1308,6 +1308,10 @@ BZ2File_init(BZ2FileObject *self, PyObject *args, PyObject *kwargs)
break;
}
+ if (mode_char == 0) {
+ mode_char = 'r';
+ }
+
mode = (mode_char == 'r') ? "rb" : "wb";
self->file = PyObject_CallFunction((PyObject*)&PyFile_Type, "(Osi)",