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/rangeobject.c b/Objects/rangeobject.c
index 8d71a90..c5355df 100644
--- a/Objects/rangeobject.c
+++ b/Objects/rangeobject.c
@@ -261,19 +261,19 @@
}
if (istart == 0 && istep == 1)
- result = PyString_FromFormat("range(%s)",
- PyString_AS_STRING(stop_str));
+ result = PyUnicode_FromFormat("range(%s)",
+ PyString_AS_STRING(stop_str));
else if (istep == 1) {
if (start_str)
- result = PyString_FromFormat("range(%s, %s)",
- PyString_AS_STRING(start_str),
- PyString_AS_STRING(stop_str));
+ result = PyUnicode_FromFormat("range(%s, %s)",
+ PyString_AS_STRING(start_str),
+ PyString_AS_STRING(stop_str));
}
else if (start_str && step_str)
- result = PyString_FromFormat("range(%s, %s, %s)",
- PyString_AS_STRING(start_str),
- PyString_AS_STRING(stop_str),
- PyString_AS_STRING(step_str));
+ result = PyUnicode_FromFormat("range(%s, %s, %s)",
+ PyString_AS_STRING(start_str),
+ PyString_AS_STRING(stop_str),
+ PyString_AS_STRING(step_str));
/* else result is NULL and an error should already be set. */
Py_XDECREF(start_str);