On Thursday 01 May 2003 12:25 pm, Alexandre Julliard wrote:
"Gregory M. Turner" gmturner007@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.