BugReport/211 のバックアップソース(No.6)



* 正規表現キーワードで 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};

#comment
#attach

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