base64.decodestring('') should return '' instead of raising an
exception.  The bug fix for SF #430849 wasn't quite right.  This
closes SF bug #595671.  I'll backport this to Python 2.2.
diff --git a/Lib/test/test_base64.py b/Lib/test/test_base64.py
index 223c388..42e3c81 100644
--- a/Lib/test/test_base64.py
+++ b/Lib/test/test_base64.py
@@ -44,12 +44,7 @@
             "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0\nNTY3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==\n") ==
             "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#0^&*();:<>,. []{}",
             reason = "long decodestring failed")
-        try:
-            base64.decodestring("")
-        except binascii_error:
-            pass
-        else:
-            self.fail("expected a binascii.Error on null decode request")
+        test_support.verify(base64.decodestring('') == '')
 
 def test_main():
     test_support.run_unittest(Base64TestCase)
diff --git a/Modules/binascii.c b/Modules/binascii.c
index 0fe85fc..c56d528 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -346,10 +346,6 @@
 	if ( !PyArg_ParseTuple(args, "t#:a2b_base64", &ascii_data, &ascii_len) )
 		return NULL;
 
-	if ( ascii_len == 0) {
-		PyErr_SetString(Error, "Cannot decode empty input");
-		return NULL;
-	}
 	bin_len = ((ascii_len+3)/4)*3; /* Upper bound, corrected later */
 
 	/* Allocate the buffer */
@@ -413,7 +409,8 @@
 	}
 
 	/* and set string size correctly */
-	_PyString_Resize(&rv, bin_len);
+	if (bin_len > 0)
+		_PyString_Resize(&rv, bin_len);
 	return rv;
 }