BugReport/211 のバックアップ(No.8)




正規表現キーワードで dll がエラーを返すと落ちる

  • ページ: BugReport
  • 投稿者: anonymous
  • 優先順位: 普通
  • 状態: 提案
  • カテゴリー: 正規表現キーワード
  • 投稿日: 2017-01-25 (水) 12:49:24
  • バージョン: 2.3.1.0

メッセージ

再現: 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" ですね。なんでだろう。 -- 2017-01-25 (水) 20:42:07
  • http://www.hi-ho.ne.jp/babaq/bregexp.html -- 2017-01-26 (木) 02:49:42
  • ここの(Bregexpの)BMatchのサンプルではwhile(BMatch(...))と書かれてるから、戻り値の意味が違うんですかね。 -- Moca 2017-01-26 (木) 02:50:44
  • bregonigのほうの説明では「戻り値、負、エラー」と記述されてました -- Moca 2017-01-26 (木) 02:52:49
  • とりあえずpatch化しました。upatchid:1095 -- Moca 2017-01-26 (木) 03:01:52
  • bregexp.htmlのサンプルは罠です(笑)。自分はサクラエディタのソースから戻り値の意味を学習しました。bregonig.dll単体では再現しないようなので要調査ですが、メモリ確保エラーの可能性があるならパターンがコンパイル済みであってもエラー処理は必要でしたね。 -- 2017-01-26 (木) 12:14:11
  • https://twitter.com/k_takata/status/824327528852492289 -- 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)ターゲットでビルドしていますが… -- 報告者? 2017-01-28 (土) 00:52:28
  • a.cppで-1:failed to allocate memory再現します。64bit版はOSがやばいです。サクラ32bitもちょっと重くなるのを確認。 -- Moca 2017-01-28 (土) 02:33:09

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White
filea.cpp 152件 [詳細]
[添付ファイル一覧] [全ページの添付ファイル一覧]
アップロード可能最大ファイルサイズは 2,048KB です。

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