On 2010-12-02, Paul Rubin <no.em...@nospam.invalid> wrote: > Tim Harig <user...@ilthio.net> writes: >>> longjmp. Alternatively you can have an auxiliary stack of cleanup >>> records that the longjmp handler walks through. Of course if you do >> >> Only if you already have pointers to *all* of the data structures at >> the point where you put your setjmp(). > > The setjmp point only has to know where the aux stack is and its depth > when the longjmp happens. The cleanup records contain any necessary > pointers to data structures that need freeing. That is basically how > try/finally would do it too. This is pretty standard stuff.
I am not talking about what setjmp() has to do, I am talking about what *you* have to do after setjmp() returns. If you have allocated memory in intermediate functions and you don't have a reference to them outside of the functions that longjmp() bypasses from returning properly (and thus either not clearning data structures or returning a reference to those data structures as it normally would) then you have potential memory leaks, dangling pointers, etc. I am not saying that this cannot be done. What I am saying is that it is inherently error prone. -- http://mail.python.org/mailman/listinfo/python-list