diff Objects/typeobject.c @ 59538:f49d24b4456e

Issue #6697: use %U format instead of _PyUnicode_AsString(), because _PyUnicode_AsString() was not checked for error (NULL). The unicode string is no more truncated to 200 or 400 *bytes*.
author Victor Stinner <victor.stinner@haypocalc.com>
date Fri, 12 Mar 2010 17:00:41 +0000
parents c5099818e0d4
children cab14be0ada1
line wrap: on
line diff
--- a/Objects/typeobject.c	Fri Mar 12 14:47:28 2010 +0000
+++ b/Objects/typeobject.c	Fri Mar 12 17:00:41 2010 +0000
@@ -1295,10 +1295,15 @@
 		for (j = i + 1; j < n; j++) {
 			if (PyList_GET_ITEM(list, j) == o) {
 				o = class_name(o);
-				PyErr_Format(PyExc_TypeError,
-					     "duplicate base class %.400s",
-					     o ? _PyUnicode_AsString(o) : "?");
-				Py_XDECREF(o);
+				if (o != NULL) {
+					PyErr_Format(PyExc_TypeError,
+						     "duplicate base class %U",
+						     o);
+					Py_DECREF(o);
+				} else {
+					PyErr_SetString(PyExc_TypeError,
+						     "duplicate base class");
+				}
 				return -1;
 			}
 		}