[Python-Dev] Fun with numbers

Steve Holden sholden@holdenweb.com
Fri, 26 Apr 2002 12:08:32 -0400


----- Original Message -----
From: "Guido van Rossum" <guido@python.org>
To: "Barry A. Warsaw" <barry@zope.com>
Cc: <python-dev@python.org>
Sent: Thursday, April 25, 2002 9:02 PM
Subject: Re: [Python-Dev] Fun with numbers


> > Tim, Jeremy, and I are having so much fun...
> [...]
> > >>> 23000 .__class__ = bool
> > Debug memory block at address p=0x814f544:
> >     485823496 bytes originally requested
> >     the 4 pad bytes at p-4 are not all FORBIDDENBYTE (0xfb):
> >         at p-4: 0x7a *** OUCH
> >         at p-3: 0x61 *** OUCH
> >         at p-2: 0xc8 *** OUCH
> >         at p-1: 0x3c *** OUCH
> >     the 4 pad bytes at tail=0x250a094c are Segmentation fault
>
> Ouch.  Fixed in CVS for this particular case, but I think you may
> still be able provoke this with a built-in type that derives from
> another built-in type without adding any new fields, if the base type
> has a funky allocator that the derived type doesn't inherit.  Also,
> the fix means that if an extension defines a type that inherits from
> int but doesn't override tp_alloc and tp_free, it inherits a tp_alloc
> that's not matched to the tp_free.  But why would anyone do that...?
>
Probably because they don't know what they're doing. Expect to see my bug
report in SourceForge.

> Inspired by this, I tried something else.
>
>     >>> print True
>     True
>     >>> True.__class__ = int
>     >>> print True
>     1
>     >>>
>
> There are no ill side effects.  Handy for bool-haters. :-)
>
Now that's neat.

regards
 Steve
--
home: http://www.holdenweb.com/
Python Web Programming:
http://pydish.holdenweb.com/pwp/