[Python-Dev] Memory management in the AST parser & compiler

Marek "Baczek" Baczyński imbaczek at gmail.com
Tue Nov 15 13:22:21 CET 2005


2005/11/15, Nick Coghlan <ncoghlan at iinet.net.au>:
> Specifically, the body of the entire function is written inside a switch
> statement, with 'break' then used as the equivalent of "raise Exception". For
> example:
>
>    PyObject* switchAsTry()
>    {
>      switch(0) {
>        default:
>          /* Real function body goes here */
>          return result;
>      }
>      /* Error cleanup code goes here */
>      return NULL;
>    }
>
> It avoids the potential for labelling problems that arises when goto's are
> used for resource cleanup. It's a far cry from real exception handling, but
> it's the best solution I've seen within the limits of C.

<delurk>
do {
    ....
    ....
} while (0);


Same benefit and saves some typing :)

Now back to my usual hiding place.
</delurk>

--
{ Marek Baczyński :: UIN 57114871 :: GG 161671 :: JID imbaczek at jabber.gda.pl  }
{ http://www.vlo.ids.gda.pl/ | imbaczek at poczta fm | http://www.promode.org }
.. .. .. .. ... ... ...... evolve or face extinction ...... ... ... .. .. .. ..


More information about the Python-Dev mailing list