diff Python/pythonrun.c @ 36751:8e04de2480e4 legacy-trunk

PEP 352 implementation. Creates a new base class, BaseException, which has an added message attribute compared to the previous version of Exception. It is also a new-style class, making all exceptions now new-style. KeyboardInterrupt and SystemExit inherit from BaseException directly. String exceptions now raise DeprecationWarning. Applies patch 1104669, and closes bugs 1012952 and 518846.
author Brett Cannon <bcannon@gmail.com>
date Wed, 01 Mar 2006 04:25:17 +0000
parents bbf16fd024df
children d6c30ce3868b
line wrap: on
line diff
--- a/Python/pythonrun.c	Wed Mar 01 04:06:10 2006 +0000
+++ b/Python/pythonrun.c	Wed Mar 01 04:25:17 2006 +0000
@@ -976,7 +976,7 @@
 	fflush(stdout);
 	if (value == NULL || value == Py_None)
 		goto done;
-	if (PyInstance_Check(value)) {
+	if (PyExceptionInstance_Check(value)) {
 		/* The error code should be in the `code' attribute. */
 		PyObject *code = PyObject_GetAttrString(value, "code");
 		if (code) {
@@ -1106,11 +1106,10 @@
 		if (err) {
 			/* Don't do anything else */
 		}
-		else if (PyClass_Check(exception)) {
-			PyClassObject* exc = (PyClassObject*)exception;
-			PyObject* className = exc->cl_name;
+		else if (PyExceptionClass_Check(exception)) {
+			char* className = PyExceptionClass_Name(exception);
 			PyObject* moduleName =
-			      PyDict_GetItemString(exc->cl_dict, "__module__");
+			      PyObject_GetAttrString(exception, "__module__");
 
 			if (moduleName == NULL)
 				err = PyFile_WriteString("<unknown>", f);
@@ -1126,8 +1125,7 @@
 				if (className == NULL)
 				      err = PyFile_WriteString("<unknown>", f);
 				else
-				      err = PyFile_WriteObject(className, f,
-							       Py_PRINT_RAW);
+				      err = PyFile_WriteString(className, f);
 			}
 		}
 		else