On Thursday 01 May 2003 12:25 pm, Alexandre Julliard wrote:
"Gregory M. Turner" <gmturner007(a)ameritech.net> writes:
Say, Alexandre, would it be a possibility to just bake some magic into wpp for this?
I don't see any reasonable way of doing that, you really need some compiler support. Note that even with gcc nested functions it won't be 100% correct, for instance a return inside a try block will corrupt the handler list; the only way to fully support exceptions would be to make gcc aware of them.
hmm, you say this on the assumption that the try block would be a nested function itself? Because I think I could work a gcc-specific version so that there really is no nested function except perhaps for the "expr" evaluator, as in __try { } __except ( expr ) { }. Basically, except for the additional hassle of non-portability it should be no better or worse than __TRY... (which does have some documented limitations, but seems pretty darn close to what we want). Or, do you say this because there would be no __wine_pop_frame if they returned? Couldn't we overwrite the return address pointer on the stack and then (if & when it is used) jump to the real return address after neccesary clean-up's...? Does __FINALLY suffer from this problem? I dunno... probably you are right... even if there is a way, it sure is a hell of a brainteaser. -- "Security is mostly superstition. It does not exist in nature, nor do the children of men as a whole experience it. Avoiding danger is no safer in the long run than outright exposure. Life is either a daring adventure, or nothing. To keep our faces toward change and behave like free spirits in the presence of fate is strength undefeatable." --Helen Keller gmt