[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: Stack overflow in regexp matcher



>>>>> In [emacs-w3m : No.10313] 野宮賢 / NOMIYA Masaruさん wrote:

>> cf. http://www.jpl.org/elips/BUGS-ja.html

> これは拝見していました.
> ただ.

> 「これは byte-code(...) という関数が wl-message-buffer-display という
>   関数から呼ばれてエラーが起きているのですが、このように byte compile
>   された関数が何で、どこで定義されているかを知ることは事実上不可能です。」

> と書かれてありますので,小生には無理だと思っていました.

すみません、これは野宮さんの記事の後で読み返したらあんまり書いて
いなかったことに気がついて追加したものです。しかし、どうも言葉足
らずだったようですね。以下のように書き換えました:

,----
| ...という
| 関数から呼ばれてエラーが起きているのですが、このように byte compile
| された関数が現れても、それだけの情報では、それが何で、どこで定義され
| ているかを知ることは事実上不可能です。
| 
| そこで、...                                ...エラーの詳細を知るため
| の方法を書きましょう。二つ目のような場合でも、同様の方法でもっと人間
| が判読しやすい情報を得ることができます。
`----

> やってみましたところ,sb-itmedia.el の

> (when (and (re-search-forward "\
> \\(<h[0-9]>[^<]+</h[0-9]>[^<]*\\(\\(?:<[^>h][^>]*>[^<]*\\)*\\)\\)?<!--BODY-->"
> 				      nil t)

> の正規表現が原因で,

"</h[0-9]>" と "<!--BODY-->" の間の曖昧表現は、いかにも非常に広
い範囲にマッチしてしまいそうですね。ご指摘ありがとうございます。
いずれ直そうと思います。
-- 
山岡
;; 本業の忙しいときに限っていろんなバグ修正依頼が来るのは何とか
;; の法則なんでしょうか。ハンガリーの人から来た「ぼくの .gnus.el
;; を添削して」にはさすがにまだ対応していません。^^;;