[Python-checkins] r78875 - in python/branches/py3k: Modules/_hashopenssl.c Modules/zipimport.c Objects/funcobject.c Objects/typeobject.c Python/ceval.c Python/import.c

victor.stinner python-checkins at python.org
Fri Mar 12 18:00:41 CET 2010


Author: victor.stinner
Date: Fri Mar 12 18:00:41 2010
New Revision: 78875
Log:
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*.
Modified:
 python/branches/py3k/Modules/_hashopenssl.c
 python/branches/py3k/Modules/zipimport.c
 python/branches/py3k/Objects/funcobject.c
 python/branches/py3k/Objects/typeobject.c
 python/branches/py3k/Python/ceval.c
 python/branches/py3k/Python/import.c
Modified: python/branches/py3k/Modules/_hashopenssl.c
==============================================================================
--- python/branches/py3k/Modules/_hashopenssl.c	(original)
+++ python/branches/py3k/Modules/_hashopenssl.c	Fri Mar 12 18:00:41 2010
@@ -294,10 +294,7 @@
 static PyObject *
 EVP_repr(EVPobject *self)
 {
- char buf[100];
- PyOS_snprintf(buf, sizeof(buf), "<%s HASH object @ %p>",
- _PyUnicode_AsString(self->name), self);
- return PyUnicode_FromString(buf);
+ return PyUnicode_FromFormat("<%U HASH object @ %p>", self->name, self);
 }
 
 #if HASH_OBJ_CONSTRUCTOR
Modified: python/branches/py3k/Modules/zipimport.c
==============================================================================
--- python/branches/py3k/Modules/zipimport.c	(original)
+++ python/branches/py3k/Modules/zipimport.c	Fri Mar 12 18:00:41 2010
@@ -321,15 +321,12 @@
 		/* add __path__ to the module *before* the code gets
 		 executed */
 		PyObject *pkgpath, *fullpath;
-		char *prefix = _PyUnicode_AsString(self->prefix);
 		char *subname = get_subname(fullname);
 		int err;
 
-		fullpath = PyUnicode_FromFormat("%s%c%s%s",
-					_PyUnicode_AsString(self->archive),
-					SEP,
-					prefix ? prefix : "",
-					subname);
+		fullpath = PyUnicode_FromFormat("%U%c%U%s",
+					self->archive, SEP,
+					self->prefix, subname);
 		if (fullpath == NULL)
 			goto error;
 
Modified: python/branches/py3k/Objects/funcobject.c
==============================================================================
--- python/branches/py3k/Objects/funcobject.c	(original)
+++ python/branches/py3k/Objects/funcobject.c	Fri Mar 12 18:00:41 2010
@@ -295,9 +295,9 @@
 		 PyTuple_GET_SIZE(op->func_closure));
 	if (nclosure != nfree) {
 		PyErr_Format(PyExc_ValueError,
-			 "%s() requires a code object with %zd free vars,"
+			 "%U() requires a code object with %zd free vars,"
 			 " not %zd",
-			 _PyUnicode_AsString(op->func_name),
+			 op->func_name,
 			 nclosure, nfree);
 		return -1;
 	}
Modified: python/branches/py3k/Objects/typeobject.c
==============================================================================
--- python/branches/py3k/Objects/typeobject.c	(original)
+++ python/branches/py3k/Objects/typeobject.c	Fri Mar 12 18:00:41 2010
@@ -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;
 			}
 		}
Modified: python/branches/py3k/Python/ceval.c
==============================================================================
--- python/branches/py3k/Python/ceval.c	(original)
+++ python/branches/py3k/Python/ceval.c	Fri Mar 12 18:00:41 2010
@@ -3989,10 +3989,10 @@
 		if (PyDict_GetItem(kwdict, key) != NULL) {
 			PyErr_Format(PyExc_TypeError,
 				 "%.200s%s got multiple values "
-				 "for keyword argument '%.200s'",
+				 "for keyword argument '%U'",
 				 PyEval_GetFuncName(func),
 				 PyEval_GetFuncDesc(func),
-				 _PyUnicode_AsString(key));
+				 key);
 			Py_DECREF(key);
 			Py_DECREF(value);
 			Py_DECREF(kwdict);
Modified: python/branches/py3k/Python/import.c
==============================================================================
--- python/branches/py3k/Python/import.c	(original)
+++ python/branches/py3k/Python/import.c	Fri Mar 12 18:00:41 2010
@@ -2691,8 +2691,8 @@
 		parent = PyDict_GetItem(modules, parentname);
 		if (parent == NULL) {
 			PyErr_Format(PyExc_ImportError,
-			 "reload(): parent %.200s not in sys.modules",
-			 _PyUnicode_AsString(parentname));
+			 "reload(): parent %U not in sys.modules",
+			 parentname);
 			Py_DECREF(parentname);
 			imp_modules_reloading_clear();
 			return NULL;


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /