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