Bug #1566800: make sure that EnvironmentError can be called with any
number of arguments, as was the case in Python 2.4.
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index 27d88a0..585d6fe 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -196,11 +196,16 @@
(SystemExit, ('foo',),
{'message' : 'foo', 'args' : ('foo',), 'code' : 'foo'}),
(IOError, ('foo',),
- {'message' : 'foo', 'args' : ('foo',)}),
+ {'message' : 'foo', 'args' : ('foo',), 'filename' : None,
+ 'errno' : None, 'strerror' : None}),
(IOError, ('foo', 'bar'),
- {'message' : '', 'args' : ('foo', 'bar')}),
+ {'message' : '', 'args' : ('foo', 'bar'), 'filename' : None,
+ 'errno' : 'foo', 'strerror' : 'bar'}),
(IOError, ('foo', 'bar', 'baz'),
- {'message' : '', 'args' : ('foo', 'bar')}),
+ {'message' : '', 'args' : ('foo', 'bar'), 'filename' : 'baz',
+ 'errno' : 'foo', 'strerror' : 'bar'}),
+ (IOError, ('foo', 'bar', 'baz', 'quux'),
+ {'message' : '', 'args' : ('foo', 'bar', 'baz', 'quux')}),
(EnvironmentError, ('errnoStr', 'strErrorStr', 'filenameStr'),
{'message' : '', 'args' : ('errnoStr', 'strErrorStr'),
'strerror' : 'strErrorStr', 'errno' : 'errnoStr',
diff --git a/Misc/NEWS b/Misc/NEWS
index 23b9bbb..3bca93d 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
Core and builtins
-----------------
+- Bug #1566800: make sure that EnvironmentError can be called with any
+ number of arguments, as was the case in Python 2.4.
+
- Patch #1567691: super() and new.instancemethod() now don't accept
keyword arguments any more (previously they accepted them, but didn't
use them).
diff --git a/Objects/exceptions.c b/Objects/exceptions.c
index bfe28a9..c0b813d 100644
--- a/Objects/exceptions.c
+++ b/Objects/exceptions.c
@@ -510,7 +510,7 @@
if (BaseException_init((PyBaseExceptionObject *)self, args, kwds) == -1)
return -1;
- if (PyTuple_GET_SIZE(args) <= 1) {
+ if (PyTuple_GET_SIZE(args) <= 1 || PyTuple_GET_SIZE(args) > 3) {
return 0;
}