◀Unicode版開発トップへ
  • 2263 wineで使うと落ちる場合があります。
    • 2264 Re:wineで使うと落ちる場合があります。
      • 2302 Re2:wineで使うと落ちる場合があります。
  • [2263] wineで使うと落ちる場合があります。 teru 2015年04月10日 23:17

    /* 間違って一般の方に投稿していたので、投稿しなおしました。すみません。 */

    OS: Debian + wine 1.7.40
    ver: 2.2.0.1
    現象:タブを表示する設定にした状態でファイルを開き、
    内容を編集するとサクラエディタが落ちます。
    原因:sakura_core/window/CTabWnd.cpp で、 TabCtrl_GetItem に渡す
    TCITEM 構造体のメンバを適切に指定していないためと思われます。

    自分でMingGWでビルドしたら(適用前でも)再現しなかったので確認できてませんが、
    コードが足りてないのは確かなので、パッチを置いておきます。
    Index: sakura_core/window/CTabWnd.cpp
    ===================================================================
    --- sakura_core/window/CTabWnd.cpp (revision 4017)
    +++ sakura_core/window/CTabWnd.cpp (working copy)
    @@ -1831,6 +1831,7 @@
    tcitem.mask = TCIF_TEXT | TCIF_IMAGE;
    TCHAR szNameOld[1024];
    tcitem.pszText = szNameOld;
    + tcitem.cchTextMax = _countof(szNameOld);
    TabCtrl_GetItem( m_hwndTab, nIndex, &tcitem );
    if( 0 != auto_strcmp( szNameOld, szName )
    || tcitem.iImage != GetImageIndex( p ) ){
    • [2264] Re:wineで使うと落ちる場合があります。 ds14050 2015年04月13日 01:25

      ▼ teruさん
      パッチ提供ありがとうございます。<(_ _)>

      F1ヘルプによりますと
      > cchTextMax
      > Size in TCHARs of the buffer pointed to by the pszText member. If the structure is not receiving information, this member is ignored.
      1.バイト数ではなくTCHARで数えた文字数をセットすること
      2.情報を受け取るので *なければ* 無視される
      と書いてありました。否定文で注意書きを書くなって言いたくなりますね。

      TCITEMで GREPしたところ、TCIF_TEXTをセットして Getしているのは
      指摘された1か所だけでした。コミットはこちらです。

      http://sourceforge.net/p/sakura-editor/code/4018/

      WINEでテストはできていませんが、ブレークポイントをセットして
      問題なく処理が通過していくのを確認しています。
      • [2302] Re2:wineで使うと落ちる場合があります。 teru 2015年10月13日 22:51

        ver 2.3.0.0 で直っていることを確認しました。
        ご対応ありがとうございました。