From 75c26bc6a78169bf621885fa91b0d8f93241e682 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 7 Aug 2007 23:29:20 +0000 Subject: [PATCH] BZ2File.read(0) should return b"" rather than raising ValueError. This fixes test_tarfile.py. I've added a unit test for the correct bz2 behavior. --- Lib/test/test_bz2.py | 8 ++++++++ Modules/bz2module.c | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py index 28af42e263..06293f5265 100644 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@ -65,6 +65,14 @@ class BZ2FileTest(BaseTest): self.assertEqual(bz2f.read(), self.TEXT) bz2f.close() + def testRead0(self): + # Test BBZ2File.read(0)" + self.createTempFile() + bz2f = BZ2File(self.filename) + self.assertRaises(TypeError, bz2f.read, None) + self.assertEqual(bz2f.read(0), b"") + bz2f.close() + def testReadChunk10(self): # "Test BZ2File.read() in chunks of 10 bytes" self.createTempFile() diff --git a/Modules/bz2module.c b/Modules/bz2module.c index ee2186eb1c..954c9147c0 100644 --- a/Modules/bz2module.c +++ b/Modules/bz2module.c @@ -431,7 +431,7 @@ BZ2File_read(BZ2FileObject *self, PyObject *args) goto cleanup; } ret = PyBytes_FromStringAndSize((char *)NULL, buffersize); - if (ret == NULL) + if (ret == NULL || buffersize == 0) goto cleanup; bytesread = 0; -- 2.50.1