◀一般トップへ
  • 2167 メモ
    • 2171 RE: メモ
      • 2178 Re2: メモ
  • [2167] メモ みく 2002年08月07日 18:52


    ・ツール→共通設定→支援の「キーワードヘルプ」誤記

    ・BugsInfo.txtファイルの77行目にゴミ

    ・CFileWrite.cpp
    C++に詳しくないので適当に書きますが、
    _tfopenに失敗したらthrowしてますが、
    このときデストラクタは走らないということでよろしいのでしょうか。

    →もし走るならデストラクタでいきなりfclose(m_hFile)はまずい。
    →もし走らないならm_pszPathはどこで解放するのでしょうか。

    m_pszPath=::_tcsdup(pszPath);
    は必ず成功するとは限らないのでNULLチェックは必要です。
    デストラクタではNULLチェックしてから使いましょう。

    コンストラクタでm_dwFileAttribute == -1 となったとき、
    m_pszPathはNULLのままなのでデストラクタでfree(m_pszPath);はまずいでしょう。
    • [2171] RE: メモ みく 2002年08月08日 21:08


      >・CFileWrite.cpp
      Writeのときも同じく、fwriteエラー時にthrowしてしまうので
      m_pszPathが解放されません。しかもファイルをクローズしないので
      FILEポインタつかみっぱなしです。

      ・フォントの設定で、
      MSゴシック→欧文フォント→MSゴシック
      としたとき、フォントがMSゴシックに戻りません。
      Terminal→MSゴシック
      とすると戻ります。
      • [2178] Re2: メモ こおり 2002年08月09日 09:09

        >・CFileWrite.cpp
        ここは私が書いた部分ですね。
        沢山ミスがあって申し訳ありません。

        > _tfopenに失敗したらthrowしてますが、
        > →もし走るならデストラクタでいきなりfclose(m_hFile)はまずい。
        > →もし走らないならm_pszPathはどこで解放するのでしょうか。
        デストラクタは走らないので、m_pszPathを解放していませんでした。
        throwするまえにfree(m_pszPath)を呼び出す必要がありましたね。

        > コンストラクタでm_dwFileAttribute == -1 となったとき、
        > m_pszPathはNULLのままなのでデストラクタでfree(m_pszPath);はまずいでしょう。
        freeは引数がNULLの時は何もしないと思っていたので、こうしたのですが
        環境によってはまずかったりするのでしょうか?

        > Writeのときも同じく、fwriteエラー時にthrowしてしまうので
        > m_pszPathが解放されません。しかもファイルをクローズしないので
        > FILEポインタつかみっぱなしです。
        コンストラクタの呼び出しが完了した後で例外がthrowされた場合は
        デストラクタが呼び出されるので、これは大丈夫だと思います。