Add functions PyUnicode_Append() and PyUnicode_AppendAndDel() that mirror
PyString_Concat() and PyString_ConcatAndDel() (the name PyUnicode_Concat()
was already taken).
Change PyObject_Repr() to always return a unicode object.
Update all repr implementations to return unicode objects.
Add a function PyObject_ReprStr8() that calls PyObject_Repr() and converts
the result to an 8bit string.
Use PyObject_ReprStr8() where using PyObject_Repr() can't be done
straightforward.
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 5556c20..6c9745a 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -369,7 +369,7 @@
sobj = PyString_FromStringAndSize(s, slen);
if (sobj == NULL)
return NULL;
- srepr = PyObject_Repr(sobj);
+ srepr = PyObject_ReprStr8(sobj);
Py_DECREF(sobj);
if (srepr == NULL)
return NULL;
@@ -433,7 +433,7 @@
{
char buf[64];
PyOS_snprintf(buf, sizeof(buf), "%ld", v->ob_ival);
- return PyString_FromString(buf);
+ return PyUnicode_FromString(buf);
}
static int
@@ -972,7 +972,7 @@
/* create a repr() of the input string,
* just like PyInt_FromString does */
PyObject *srepr;
- srepr = PyObject_Repr(x);
+ srepr = PyObject_ReprStr8(x);
if (srepr == NULL)
return NULL;
PyErr_Format(PyExc_ValueError,