◀Unicode版開発トップへ
  • 2266 正規表現OFF置換で異常終了する
    • 2267 Re:正規表現OFF置換で異常終了する
      • 2268 Re2:正規表現OFF置換で異常終了する
        • 2269 Re3:正規表現OFF置換で異常終了する
          • 2270 Re4:正規表現OFF置換で異常終了する
  • [2266] 正規表現OFF置換で異常終了する LR4 2015年07月11日 10:12

    以下の手順で異常終了します。sakura ver.2.2.0.1(たぶん2.1.0.0以後)

    ①正規表現ONの検索または置換を実行
    ②何か選択(矩形選択、非矩形選択のどちらでも同じ)
    ③正規表現OFFの置換を実行

    手っ取り早い再現手順は以下の通りです。

    ① 「無題」で abc を入力する
    -> キャレットは末尾の c の後にくる
    ② 置換ダイアログを出し、以下の条件で「上検索」を実施
    置換前:a
    置換後:(空)
    正規表現:ON
    他のチェックボックス:すべてOFF
    -> 先頭の a が選択状態になる
    ③ 続けて②のダイアログで正規表現:OFFにして「置換」を実施
    -> 異常終了
    • [2267] Re:正規表現OFF置換で異常終了する syat 2015年07月11日 21:51

      ▼ LR4さん
      > 以下の手順で異常終了します。sakura ver.2.2.0.1(たぶん2.1.0.0以後)
      >
      > ①正規表現ONの検索または置換を実行
      > ②何か選択(矩形選択、非矩形選択のどちらでも同じ)
      > ③正規表現OFFの置換を実行

      私のところでも再現しました。
      パッチを投稿しました。( patchunicode:994)
      • [2268] Re2:正規表現OFF置換で異常終了する LR4 2015年07月11日 23:22

        ▼ syatさん
        > 私のところでも再現しました。
        > パッチを投稿しました。( patchunicode:994)

        試していないのですが、「ChangeCurRegexp()呼び出しが必要かしら?」というのは自分も推測していました。
        パッチではパラメータなしのようですが、ChangeCurRegexp(false)にしたら何か問題ありますかね?
        そこで再描画まで追加する必要があるかどうか、なのですが、自分にはわかりません。

        ところで、提案です。
        ・USE_CRASHDUMPはデフォルトでONにしませんか?
        ・ver2.0.5.0までは実施されていた .pdbファイルのリリースを復活しませんか?

        今回、再現手順を特定できたのはUSE_CRASHDUMPをONでコンパイルしたsakuraをしばらく使い続けた恩恵でした。
        それまでOFFのsakuraを使っていた時には「置換を実行すると異常終了することがある」ということしかわかりませんでした。
        そんな報告受けても「再現しません」としか回答できませんよね?
        でも、
        ・異常終了時に生成されたユーザ環境の .dmpファイル
        ・コンパイル時ソース
        ・コンパイル時に作成された .pdbファイル
        これだけあればVC++2005以後を持っている誰でも障害解析が可能です。
        ユーザさんに .dmp ファイルの送付をお願いする必要はありますが、
        それだけで障害が起きたソース個所とその時点のスタックトレースがピンポイントで特定できます。

        [一般]掲示板の8044だって一発で解決できる可能性があります。

        いかがでしょうか?
        • [2269] Re3:正規表現OFF置換で異常終了する syat 2015年07月12日 13:02

          ▼ LR4さん
          > パッチではパラメータなしのようですが、ChangeCurRegexp(false)にしたら何か問題ありますかね?

          Command_REPLACEはその後に Command_SEARCH_NEXT() を呼び出していて、その中でもう一度 ChangeCurRegexp が引数なしで呼ばれるので、再描画はいらないですね。


          > ・USE_CRASHDUMPはデフォルトでONにしませんか?
          > ・ver2.0.5.0までは実施されていた .pdbファイルのリリースを復活しませんか?

          よいと思います。

          私が無知で申し訳ないのですが、これはリリースビルドでも有効なんでしょうか?
          リリースビルドだとsakura.pdbが生成されないみたいですが、作る方法があるのでしょうか?
          昔ryojiさんがやっていた記憶はありますが、継承していません・・
          • [2270] Re4:正規表現OFF置換で異常終了する LR4 2015年07月12日 15:03

            ▼ syatさん
            > リリースビルドだとsakura.pdbが生成されないみたいですが、作る方法があるのでしょうか?

            それはよくある勘違いらしいですが…
            プロジェクトのプロパティで以下の設定をすればリリースビルドでもOKです。
            [リンカ]-[デバッグ]の画面を開き、
            [デバッグ情報の生成]で「はい」を選択
            [プログラムデータベースファイル]でパスを指定

            もしかするとexeサイズが少し大きくなるかもしれませんが、
            性能には何の影響もありません。
            私の環境ではサイズも変わりませんでした。
            大きくなるといってもせいぜい1KB程度らしいです。