diff Python/errors.c @ 38246:ee2139935a1d legacy-trunk

PyErr_NewException now accepts a tuple of base classes as its "base" parameter.
author Georg Brandl <georg@python.org>
date Tue, 23 May 2006 11:17:21 +0000
parents 7bbb9b5f7adc
children 698198cabbc5
line wrap: on
line diff
--- a/Python/errors.c	Tue May 23 11:04:24 2006 +0000
+++ b/Python/errors.c	Tue May 23 11:17:21 2006 +0000
@@ -527,6 +527,7 @@
 }
 
 
+
 PyObject *
 PyErr_NewException(char *name, PyObject *base, PyObject *dict)
 {
@@ -559,9 +560,15 @@
 	classname = PyString_FromString(dot+1);
 	if (classname == NULL)
 		goto failure;
-	bases = PyTuple_Pack(1, base);
-	if (bases == NULL)
-		goto failure;
+	if (PyTuple_Check(base)) {
+		bases = base;
+		/* INCREF as we create a new ref in the else branch */
+		Py_INCREF(bases);
+	} else {
+		bases = PyTuple_Pack(1, base);
+		if (bases == NULL)
+			goto failure;
+	}
 	result = PyClass_New(bases, dict, classname);
   failure:
 	Py_XDECREF(bases);