◀ANSI版開発トップへ
  • 1591 INIファイルの強調キーワード
    • 1601 Re:INIファイルの強調キーワード
      • 1602 Re2:INIファイルの強調キーワード
        • 1608 Re2:INIファイルの強調キーワード
          • 1609 Re2:INIファイルの強調キーワード
            • 1619 Re3:INIファイルの強調キーワード
              • 1620 Re:INIファイルの強調キーワード
                • 1621 Re2:INIファイルの強調キーワード
  • [1591] INIファイルの強調キーワード hor 2002年02月14日 13:36

    CShareDataの構造が変わったとき
    新exeで旧iniを読み込むと強調キーワード(だけ?)が壊れます。

    みなさんはこんな現象でませんか?
    • [1601] Re:INIファイルの強調キーワード あろか 2002年02月14日 22:08

      ▼ horさん
      > CShareDataの構造が変わったとき
      > 新exeで旧iniを読み込むと強調キーワード(だけ?)が壊れます。
      >
      > みなさんはこんな現象でませんか?
      こちらでも出ています。少し前からでているようです。
      • [1602] Re2:INIファイルの強調キーワード hor 2002年02月14日 23:57

        ▼ あろかさん
        > ▼ horさん
        > > CShareDataの構造が変わったとき
        > > 新exeで旧iniを読み込むと強調キーワード(だけ?)が壊れます。
        > >
        > > みなさんはこんな現象でませんか?
        > こちらでも出ています。少し前からでているようです。

        REG_MULTI_SZ 周辺だとは思うのですが・・・私にはさっぱりです。
        どなたか修正していただけますでしょうか?
        • [1608] Re2:INIファイルの強調キーワード みく 2002年02月16日 09:25

          >タイトル: Re2:INIファイルの強調キーワード
          >発言者: hor
          >▼ あろかさん
          >> ▼ horさん
          >> > CShareDataの構造が変わったとき
          >> > 新exeで旧iniを読み込むと強調キーワード(だけ?)が壊れます。
          >> >
          >> > みなさんはこんな現象でませんか?
          >> こちらでも出ています。少し前からでているようです。

          私もたまにあります。

          >REG_MULTI_SZ 周辺だとは思うのですが・・・私にはさっぱりです。
          >どなたか修正していただけますでしょうか?

          CShareData_new.cpp:790行、CProfile.cpp:306行
          pszMem = new char[MAX_SETNUM * MAX_KEYWORDNUM * ( MAX_KEYWORDLEN ) + 1];
          のMAX_SETNUMはよくわかりませんが、キーワードのセパレータを考慮してないので、
          その分不足するのではないでしょうか。(MAX登録してないので大丈夫とは思う)

          それよりも、793行目でnMemLenを取得した後に必要なバッファサイズを確保した
          ほうが確実だと思います。


          あと、CProfile.cpp:336で1バイトだけクリアしてますが、後の処理でmemcpyを
          使うところがあり0で終端させる処理がないので初期化するなら全エリア0クリア
          しないと危険です。
          メモリにごみがあるときにキーワードが壊れるんではないでしょうか。
          • [1609] Re2:INIファイルの強調キーワード みく 2002年02月16日 09:57


            >あと、CProfile.cpp:336で1バイトだけクリアしてますが、後の処理でmemcpyを
            >使うところがあり0で終端させる処理がないので初期化するなら全エリア0クリア
            >しないと危険です。
            >メモリにごみがあるときにキーワードが壊れるんではないでしょうか。

            bReadのときは、memcpyする前に呼び元が用意したバッファを全クリア
            するのが確実です。

            呼び元が要求したデータサイズを強制的にmemcpyしていますが、CProfile
            が持っているデータのほうが短ければ範囲外をリードしてしまいます。

            もう一個、キーワードセットがiniファイルの文字列の中で一番長いと思って
            szValueStrバッファを確保していますが、要求がそのバッファサイズを超えるか
            どうかは未チェックのような。
            • [1619] Re3:INIファイルの強調キーワード hor 2002年02月18日 15:40

              メモ帳でINIファイルを開いてそのまま上書保存するだけで強調キーワードが壊れました…
              • [1620] Re:INIファイルの強調キーワード げんた 2002年02月18日 16:11

                >メモ帳でINIファイルを開いてそのまま上書保存するだけで強調キーワードが壊れました…
                キーワードの区切りに\0を使っていますからねぇ.「普通」のテキストファイルしか扱えないようなら壊れるでしょうね.

                バイナリはBase64エンコードするとかした方が良いのでしょうけど.
                • [1621] Re2:INIファイルの強調キーワード hor 2002年02月18日 17:00

                  ▼ げんたさん
                  > >メモ帳でINIファイルを開いてそのまま上書保存するだけで強調キーワードが壊れました…
                  > キーワードの区切りに\0を使っていますからねぇ.「普通」のテキストファイルしか扱えないようなら壊れるでしょうね.

                  なるほど・・・失礼しました。(メモ帳で編集できるようになったらうれしいです)

                  この件と旧バージョンのINIファイルを新バイナリで読んだら強調キーワードが壊れる場合がある件とは無関係ってことで、
                  引き続きどなたか修正していただけることを期待しています。