You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
PyUnicode_FromFormatV handles %R and %S incorrectly. #51857
It seems PyUnicode_FromFormatV wrongly assumes that the return value of
PyObject_Str and PyObject_Repr is a unicode object. It looks like the
%S and %R feature was backported from 3.x without updating the code for 2.x.
PyObject*PyUnicode_FromFormatV(constchar*format, va_listvargs)
{
...
case'S':
{
PyObject*obj=va_arg(count, PyObject*);
PyObject*str;
assert(obj);
str=PyObject_Str(obj);
if (!str)
goto fail;
n+=PyUnicode_GET_SIZE(str);
/* Remember the str and switch to the next slot */*callresult++=str;
break;
}
case'R':
{
PyObject*obj=va_arg(count, PyObject*);
PyObject*repr;
assert(obj);
repr=PyObject_Repr(obj);
if (!repr)
goto fail;
n+=PyUnicode_GET_SIZE(repr);
/* Remember the repr and switch to the next slot */*callresult++=repr;
break;
}
...
}
Activity
avassalotti commentedon Dec 30, 2009
It seems PyUnicode_FromFormatV wrongly assumes that the return value of
PyObject_Str and PyObject_Repr is a unicode object. It looks like the
%S and %R feature was backported from 3.x without updating the code for 2.x.