diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index 076d84d..b4a766e 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -270,6 +270,8 @@
                         'winerror' : 1 }))
 except NameError: pass
 
+import pickle, random
+
 for args in exceptionList:
     expected = args[-1]
     try:
@@ -283,3 +285,14 @@
                         ( repr(e), checkArgName,
                             repr(expected[checkArgName]),
                             repr(getattr(e, checkArgName)) ))
+        
+        # test for pickling support
+        new = pickle.loads(pickle.dumps(e, random.randint(0, 2)))
+        for checkArgName in expected.keys():
+            if repr(getattr(e, checkArgName)) != repr(expected[checkArgName]):
+                raise TestFailed('Checking unpickled exception arguments, '
+                        'exception '
+                        '"%s", attribute "%s" expected %s got %s.' %
+                        ( repr(e), checkArgName,
+                            repr(expected[checkArgName]),
+                            repr(getattr(e, checkArgName)) ))
diff --git a/Objects/exceptions.c b/Objects/exceptions.c
index 986d211..16ba5e5 100644
--- a/Objects/exceptions.c
+++ b/Objects/exceptions.c
@@ -143,15 +143,8 @@
 {
     if (self->args && self->dict)
         return PyTuple_Pack(3, self->ob_type, self->args, self->dict);
-    else if (self->args)
+    else
         return PyTuple_Pack(2, self->ob_type, self->args);
-    else {
-        PyObject *res, *tup = PyTuple_New(0);
-        if (!tup) return NULL;
-        res = PyTuple_Pack(2, self->ob_type, tup);
-        Py_DECREF(tup);
-        return res;
-    }
 }
 
 
@@ -667,6 +660,7 @@
 {
     PyObject *args = self->args;
     PyObject *res = NULL, *tmp;
+
     /* self->args is only the first two real arguments if there was a
      * file name given to EnvironmentError. */
     if (PyTuple_GET_SIZE(args) == 2 && self->filename) {
@@ -683,10 +677,13 @@
 
         Py_INCREF(self->filename);
         PyTuple_SET_ITEM(args, 2, self->filename);
-    } else {
+    } else
         Py_INCREF(args);
-    }
-    res = PyTuple_Pack(3, self->ob_type, args, self->dict);
+
+    if (self->dict)
+        res = PyTuple_Pack(3, self->ob_type, args, self->dict);
+    else
+        res = PyTuple_Pack(2, self->ob_type, args);
     Py_DECREF(args);
     return res;
 }
