BugReport/211 の変更点

http://sakura.qp.land.to/?BugReport%2F211


Top > BugReport > 211

* 正規表現キーワードで dll がエラーを返すと落ちる [#ifecc48a]
-ページ:     [[BugReport]]
-投稿者:     [[anonymous]]
-優先順位:   普通
-状態:       完了
-カテゴリー: 正規表現キーワード
-投稿日:     2017-01-25 (水) 12:49:24
-バージョン: 2.3.1.0

** メッセージ [#pcce9888]
再現: bregonig v4.10 で正規表現キーワードに /^(?~\S+)TEST/k を設定して、行頭からTESTと入力すると落ちる。
原因: bregonig.dllがエラーで-1を返すとき、CRegexKeyword.cpp の CRegexKeyword::RegexIsKeyword() のエラーハンドリング漏れで落ちるため。
line.434 を if( matched ) → if( matched > 0 ) にすると落ちなくなる。
非含包オペレータはまだ様子見でいいと思う。


----
- エラーの内容は "failed to allocate memory" ですね。なんでだろう。 --  &new{2017-01-25 (水) 20:42:07};
- http://www.hi-ho.ne.jp/babaq/bregexp.html --  &new{2017-01-26 (木) 02:49:42};
- ここの(Bregexpの)BMatchのサンプルではwhile(BMatch(...))と書かれてるから、戻り値の意味が違うんですかね。 -- [[Moca]] &new{2017-01-26 (木) 02:50:44};
- bregonigのほうの説明では「戻り値、負、エラー」と記述されてました -- [[Moca]] &new{2017-01-26 (木) 02:52:49};
- とりあえずpatch化しました。[[upatchid:1095]] -- [[Moca]] &new{2017-01-26 (木) 03:01:52};
- bregexp.htmlのサンプルは罠です(笑)。自分はサクラエディタのソースから戻り値の意味を学習しました。bregonig.dll単体では再現しないようなので要調査ですが、メモリ確保エラーの可能性があるならパターンがコンパイル済みであってもエラー処理は必要でしたね。 --  &new{2017-01-26 (木) 12:14:11};
- https://twitter.com/k_takata/status/824327528852492289 --  &new{2017-01-26 (木) 23:18:05};
- 添付された a.cpp 改変で BMatchExW, BoMatchW を呼んだとしてもエラーが出ますね。ひょっとして「おま環」案件?bregonig.dllは配布32bitバイナリ、a.cppはWin10 64bit上で MinGW32bit GCC v5.3.0とVS2015ともにx86(32bit)ターゲットでビルドしていますが… -- [[報告者]] &new{2017-01-28 (土) 00:52:28};
- a.cppで-1:failed to allocate memory再現します。64bit版はOSがやばいです。サクラ32bitもちょっと重くなるのを確認。 -- [[Moca]] &new{2017-01-28 (土) 02:33:09};
- 鬼雲6.1.1/bregonig 4.11にてライブラリ側は修正されたようです。引き続きサクラ側はレビュー/コミット待ちです -- [[Moca]] &new{2017-01-29 (日) 22:33:42};
- コミットされたようなので[完了]にしてみました。 --  &new{2017-02-06 (月) 23:28:28};

#comment
#attach

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS