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
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com