: [Python-Dev] RE: Painful death in debug build (original) (raw)

Tim Peters tim.one@home.com
Sat, 6 Oct 2001 01:32:44 -0400


This is enough to reproduce the problem under a debug Windows build:


class X(long): pass

x = X(0xffffL) print "before del" del x print "after del"

It does not fail if the instance is created via

x = X(0x7fffL)

instead. It does fail on

x = X(0x8000L)

The relevant difference is that Python uses 15-bit "digits" internally for longs, so 0x8000 may be the smallest value that will cause it to allocate more memory than already comes for free with the _longobject header:

struct _longobject { PyObject_HEAD int ob_size; digit ob_digit[1]; };

but-too-tired-to-do-more-now-ly y'rs - tim