Merged revisions 78875 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r78875 | victor.stinner | 2010-03-12 18:00:41 +0100 (ven., 12 mars 2010) | 5 lines

  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*.
........
This commit is contained in:
Victor Stinner 2010-03-21 21:05:53 +00:00
parent 19495a7adc
commit 38c36f8576
6 changed files with 19 additions and 20 deletions

View file

@ -288,10 +288,7 @@ static PyGetSetDef EVP_getseters[] = {
static PyObject * static PyObject *
EVP_repr(EVPobject *self) EVP_repr(EVPobject *self)
{ {
char buf[100]; return PyUnicode_FromFormat("<%U HASH object @ %p>", self->name, self);
PyOS_snprintf(buf, sizeof(buf), "<%s HASH object @ %p>",
_PyUnicode_AsString(self->name), self);
return PyUnicode_FromString(buf);
} }
#if HASH_OBJ_CONSTRUCTOR #if HASH_OBJ_CONSTRUCTOR

View file

@ -321,15 +321,12 @@ zipimporter_load_module(PyObject *obj, PyObject *args)
/* add __path__ to the module *before* the code gets /* add __path__ to the module *before* the code gets
executed */ executed */
PyObject *pkgpath, *fullpath; PyObject *pkgpath, *fullpath;
char *prefix = _PyUnicode_AsString(self->prefix);
char *subname = get_subname(fullname); char *subname = get_subname(fullname);
int err; int err;
fullpath = PyUnicode_FromFormat("%s%c%s%s", fullpath = PyUnicode_FromFormat("%U%c%U%s",
_PyUnicode_AsString(self->archive), self->archive, SEP,
SEP, self->prefix, subname);
prefix ? prefix : "",
subname);
if (fullpath == NULL) if (fullpath == NULL)
goto error; goto error;

View file

@ -295,9 +295,9 @@ func_set_code(PyFunctionObject *op, PyObject *value)
PyTuple_GET_SIZE(op->func_closure)); PyTuple_GET_SIZE(op->func_closure));
if (nclosure != nfree) { if (nclosure != nfree) {
PyErr_Format(PyExc_ValueError, PyErr_Format(PyExc_ValueError,
"%s() requires a code object with %zd free vars," "%U() requires a code object with %zd free vars,"
" not %zd", " not %zd",
_PyUnicode_AsString(op->func_name), op->func_name,
nclosure, nfree); nclosure, nfree);
return -1; return -1;
} }

View file

@ -1295,10 +1295,15 @@ check_duplicates(PyObject *list)
for (j = i + 1; j < n; j++) { for (j = i + 1; j < n; j++) {
if (PyList_GET_ITEM(list, j) == o) { if (PyList_GET_ITEM(list, j) == o) {
o = class_name(o); o = class_name(o);
PyErr_Format(PyExc_TypeError, if (o != NULL) {
"duplicate base class %.400s", PyErr_Format(PyExc_TypeError,
o ? _PyUnicode_AsString(o) : "?"); "duplicate base class %U",
Py_XDECREF(o); o);
Py_DECREF(o);
} else {
PyErr_SetString(PyExc_TypeError,
"duplicate base class");
}
return -1; return -1;
} }
} }

View file

@ -3883,10 +3883,10 @@ update_keyword_args(PyObject *orig_kwdict, int nk, PyObject ***pp_stack,
if (PyDict_GetItem(kwdict, key) != NULL) { if (PyDict_GetItem(kwdict, key) != NULL) {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"%.200s%s got multiple values " "%.200s%s got multiple values "
"for keyword argument '%.200s'", "for keyword argument '%U'",
PyEval_GetFuncName(func), PyEval_GetFuncName(func),
PyEval_GetFuncDesc(func), PyEval_GetFuncDesc(func),
_PyUnicode_AsString(key)); key);
Py_DECREF(key); Py_DECREF(key);
Py_DECREF(value); Py_DECREF(value);
Py_DECREF(kwdict); Py_DECREF(kwdict);

View file

@ -2694,8 +2694,8 @@ PyImport_ReloadModule(PyObject *m)
parent = PyDict_GetItem(modules, parentname); parent = PyDict_GetItem(modules, parentname);
if (parent == NULL) { if (parent == NULL) {
PyErr_Format(PyExc_ImportError, PyErr_Format(PyExc_ImportError,
"reload(): parent %.200s not in sys.modules", "reload(): parent %U not in sys.modules",
_PyUnicode_AsString(parentname)); parentname);
Py_DECREF(parentname); Py_DECREF(parentname);
imp_modules_reloading_clear(); imp_modules_reloading_clear();
return NULL; return NULL;