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*.
diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c
index 26ed148..887de55 100644
--- a/Modules/_hashopenssl.c
+++ b/Modules/_hashopenssl.c
@@ -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
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index 770f18f..fed3e99 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -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;