古いD3DXのバグ

Windows2000かつ、VS6.0で開発していてどうにもハマる場所がありました。
D3DXLoadMeshHierarchyFromXInMemoryが、内部で例外出すんですよ…。
ID3DXAllocateHierarchyを継承して定義した仮想関数系が呼ばれる前に。
 
しかも20回に1回くらいという不定さ。
私のプログラムが悪いのかと思って、不定エラーの主要原因であるメモリーリークが無いか調べたり、Direct3Dのリファレンス調べまくったり。引数の内容が壊れてないか調べてみたり…。
2日かけて調べたのですが最終結論「D3DXのバグ」
例外をキャッチして無理矢理再チャレンジさせようとしても、その後は必ず例外を投げる。
Direct3Dを解放し、生成しなおしてもダメ。
そもそも例外をキャッチした後は、newをしただけでも落ちる「時がある」という不安定さに。
 
多分発症条件なんですが、10MBを超える重いXファイルを読み込んだ時。じゃないかなぁ…。
どうしようもなくなったんで、ついに2kを捨ててXPに走りました。VS2008はXP専用なんで…。
まぁ、そろそろ潮時だったし…。
2008+最新SDKを使ったらこの現象は起きなくなりました。
 
D3DXは静的リンクしたかったのですが(動的リンクによるDLLがありませんダイアログは、初心者の混乱の元だから…)残念です。