[Python-Dev] CPython crash with '%o'
Christian Heimes
lists at cheimes.de
Wed Nov 14 20:47:42 CET 2007
Mike Stall wrote:
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> SystemError: \loewis\25\python\Objects\stringobject.c:4236: bad argument to internal function
> Note that if c derives from 'int' instead of 'long', everything works as expected.
I'm able to reproduce the error with Python 2.5.1 and 2.5 svn on Linux.
It also happens when I overwrite __hex__ and do "%x" % c(5) for
subclasses of long but not for subclasses from int.
class c(long):
def __hex__(self):
return "100"
def __oct__(self):
return "100"
>>> x = c(5)
>>> hex(x)
'100'
>>> oct(x)
'100'
>>> "%o" % x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
SystemError: Objects/stringobject.c:4269: bad argument to internal function
>>> "%x" % x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
SystemError: Objects/stringobject.c:4269: bad argument to internal function
Objects/stringobject.c:_PyString_FormatLong(...)
...
/* To modify the string in-place, there can only be one
reference. */
if (result->ob_refcnt != 1) {
PyErr_BadInternalCall();
return NULL;
}
...
Christian
More information about the Python-Dev
mailing list