[バグ]アウトラインプラグインのマッチ条件を変更後タブを閉じるとAccess violation

  1. どうも、俺です。早速本題に。

    不具合の内容はまぁ、件名の通りです。以下再現手順。
    1.タブを複数個開く
    2.マッチ条件が「カスタム」、正規表現がオンになっている状態でマッチ条件を弄る
    3.タブを閉じる
    マッチ条件を弄るたびにAccess violationが出て変更が無駄になってしまいうわあああん、となっていたわけですがどうもアウトラインプラグインが原因のようです。

    さぁて、ソースコードが吹っ飛んでないか不安だぞーう・・・

     |  miso  |  返信
  2. こんばんは。

    > 1.タブを複数個開く
    > 2.マッチ条件が「カスタム」、正規表現がオンになっている状態でマッチ条件を弄る
    > 3.タブを閉じる

    確かに、上記操作を行うと、マッチ条件が適用されないことがありますね。
    今回のバグと関係があるのかも...
    マッチ条件が適用されなくなる条件は、多分、「マッチ条件を弄ったタブより右側に(新しく開いた)タブがあること」かと思います。

    > misoさん

    Access violationとは、物騒ですね。
    私も普段からタブ有効、正規表現で定義したカスタムのアウトラインを使っているので、明日は我が身と戦々恐々としております。
    もし覚えていれば、大まかで良いのでAccess violationが起こった状況(大きいファイルを開いていた、たくさんのタブを開いていた、など)を教えていただけないでしょうか?
    今後、修正されるまでの問題回避の参考にしたいです。
    よろしくお願いします。

     |  hat  |  返信
  3. > 確かに、上記操作を行うと、マッチ条件が適用されないことがありますね。
    > 今回のバグと関係があるのかも...
    > マッチ条件が適用されなくなる条件は、多分、「マッチ条件を弄ったタブより右側に(新しく開いた)タブがあること」かと思います。
    あ・・・本当だ・・・ 
    あと、タブ1でマッチ条件を一度変更しておけば以降タブ2で変更してもすぐには落ちませんね。終了時にAccess violation起こしますが。

    > もし覚えていれば、大まかで良いのでAccess violationが起こった状況(大きいファイルを開いていた、たくさんのタブを開いていた、など)を教えていただけないでしょうか?
    新規のタブを二つ開いて上記の操作を試してみてください。中身空っぽでも落ちちゃいますから。
    回避方法としては、マッチ条件を弄った後は、何もせずにさっさとMeryを終了させることだと思います。
    どうもタブを切り替えただけでも起きるっぽいので。

     |  miso  |  返信
  4. どうがんばっても再現できない・・・。

     |  Kuro  |  返信
  5. Win 7 で再現することを確認しました!
    調査します、ご報告ありがとうございました。

     |  Kuro  |  返信
  6. 追伸

    > miso さん
    ソースコードが失われてしまっておりましたら、ごめんなさい、、、
    7での動作検証が不十分でした。
    一応、プラグイン側でエラーが発生したら本体側に影響及ぼさないようにプラグインの処理を停止させるように
    仕込んであるのですが、この場合、それすら意味を成さないようですね、あぁぁぁぁ・・・。

    > hat さん
    ご不便をおかけして申し訳ございません。
    念のため確認させていただきたいのですが、お使いの環境はWin7でしょうか?

    全力で修正に取り組みますので、どうかご容赦くださいますようお願い申し上げます。

     |  Kuro  |  返信
  7. > ソースコードが失われてしまっておりましたら、ごめんなさい、、、
    > 7での動作検証が不十分でした。
    ソースコードは無事だったのでご安心くださいw
    というか、7限定のバグだったんですかね?

     |  miso  |  返信
  8. こんばんは。

    > Kuroさん
    > 念のため確認させていただきたいのですが、お使いの環境はWin7でしょうか?

    うっ... 環境を記載していませんでしたね。 どうもすみません。
    環境は、

        ・ Win XP Professional SP2、Mery 1.0.13

    です。

    実は、misoさんに教えていただいた手順を参考に、いろいろMeryを苛めてみたのですが、
    私の環境では、Access violationは、まだ一度も起こっていないのです。
    むー... いつの間にか蚊帳の外に居る感じですね(笑)。

    あと、以前にも似たようなことを書いたかもしれませんが...
    今の私は、ベータ版ユーザなので、多少の不便や不具合は覚悟の上です。
    あまりお気になさらぬよう、お願いします。

    > misoさん
    > 回避方法としては、マッチ条件を弄った後は、何もせずにさっさとMeryを終了させることだと思います。

    アドバイス、ありがとうございます。
    これで安心して(?)アウトラインを使い続けられそうです。

    > というか、7限定のバグだったんですかね?

    なるほど... それなら、私の環境でAccess violationしないわけですね。

     |  Hat  |  返信
  9. 返信ありがとうございます。

    > miso さん
    > というか、7限定のバグだったんですかね?

    ソース、無事でよかったです、、、ほんとごめんなさい。
    それっぽいですね、Vistaはちょっと環境が手元に無いので試してませんが、XPでは致命的なエラーは
    発生しないようです。7だと、一度でもプロパティを開いてしまうとダメっぽいですね。アウトラインに限らず、、、
    謎すぎてサッパリ原因つかめてませんが。これは最大の難関の予感・・・。

    > hat さん
    > 今の私は、ベータ版ユーザなので、多少の不便や不具合は覚悟の上です。

    ありがとうございます、助かります!
    XPにて検証していましたがAccess~はどうにも出なかったですね。
    正規表現の条件が反映されない、というのは、そもそも正規表現の条件などの設定はタブごとに保持してますので
    たとえばタブが2つ開かれている状態で、ひとつのタブで設定を変更して、別のタブを開いても前の条件のままに
    なってると思います。

    その後に新規タブを作成した場合は、最後に設定した条件が設定されてるはずです。
    んで、最後に閉じたタブの設定を保持するような仕様になってます。ちょっとややこしいですが・・・。

     |  Kuro  |  返信
  10. どうやら、Vista, 7 用に対策した、ALTキー問題回避パッチが悪さしてるみたいでした。

    本体側は問題無いのですが、プラグイン側にもパッチを適用しているとダメっぽくて、
    プラグインに限ってはALTキー問題をあきらめるしかない感じです。。。

    うう、Delphi6の限界がこんなところにも。。。

     |  Kuro  |  返信
  11. 関係ないんですが、Shift+Delが「カーソルのある行を切り取り」になってるのは仕様ですか?
    個人的には「カーソルのある行を削除」の方が使いやすいのですが。

     |  miso  |  返信
  12. > 関係ないんですが、Shift+Delが「カーソルのある行を切り取り」になってるのは仕様ですか?
    > 個人的には「カーソルのある行を削除」の方が使いやすいのですが。

    一応、仕様ですw
    だって、マイクロソフトのメモ帳がSHIFT + DELで「切り取り」、、、そういう仕様なんだもん・・・。

     |  Kuro  |  返信