◀Unicode版開発トップへ
  • 309 Commit報告:(Fix) Splitterウィンドウの破棄処理を ~CEditDoc から ~CSplitterWnd に移動
  • [309] Commit報告:(Fix) Splitterウィンドウの破棄処理を ~CEditDoc から ~CSplitterWnd に移動 kobake 2008年04月20日 23:45

    リビジョン:
     rev1290

    変更種別:
     バグ修正。(ユーザ視点では変化無し)

    内容:
     CEditDocデストラクタで行われていたSplitterウィンドウ破棄の処理を、
     CSplitterデストラクタで行うように修正しました。


    >>307
    ▼ Uchiさん
    > > 4) ファイルを閉じるときに落ちる。
    > > 問題が発生したため、sakuraW.exeを終了します。…
    > > のメッセージが出ます。
    > > exeでダウンロードした物では発生せず、SVNでチェックアウトしコンパイルしたもので発生します。
    > > コンパイル環境 Visual C++ 2005 Express Edition
    > CEditApp のデストラクタの破棄順番の問題だと思います。
    >
    > CEditApp.cpp のデストラクタを以下のように変更しいただけたら思います。
    >
    > CEditApp::~CEditApp()
    > {
    > delete m_pcSMacroMgr;
    > delete m_pcPropertyManager;
    > delete m_pcMruListener;
    > // delete m_pcEditWnd; // move to
    > delete m_pcGrepAgent;
    > delete m_pcVisualProgress;
    > delete m_pcSaveAgent;
    > delete m_pcLoadAgent;
    > delete m_pcEditDoc; // この中で m_pcEditWnd を使用しています。
    > delete m_pcEditWnd; // move from
    > }

    解析ありがとうございます。
    そもそも CEditDoc のデストラクタでウィンドウ破棄の処理が行われていること自体が
    設計的におかしいので、ウィンドウ破棄処理を本来の CSplitterWnd のデストラクタで
    行うように変更しました。

    #こういった問題は、自己デバッグ時に気づきたいところですが、
     なんだかこちらの環境だと無駄にタフ(?)で、無効なポインタを参照しても
     落ちてくれないことが時々あるんですよね…。
     OS は Windows Vista Home Edition、
     コンパイラは Visual Studio 2005 Standard Edition です。