> 対策としては、そのままcatch(...)を除去してその他の例外を放置するか、_set_se_translator()を使って構造化例外も含むすべての例外をC++例外処理でキャッチするか、といったところでしょうか。
構造化例外とC++例外の場所を逆転するだけで大丈夫みたいですね。
げんたさんのパッチをもとに、お試し版を更新してみました。
http://sakura.qp.land.to/?Junk%2F33VC2003, VC2005ともOKになってると思います。
構造化例外フィルタは、関数になっていたのを単純な式に置き換えています。スタックを修復する前に関数呼び出しするのは何か気持ち悪いかな、と思いまして。
#現状の関数であればスタックアクセスは無さそうなので、例外処理中に別の例外(メモリ保護例外)が発生するということも無いとは思いますが。。。
VC6でもコンパイルは通るようにしましたが、VC6ではスタック修復のライブラリ関数が使えないので、VC6でコンパイルしたものだとスタックオーバーフローしたときは従来と同じように落ちます。
(VC6ではコンパイル時に、その旨のワーニングが出るようにしてあります)