Jul 5, 2001 (Thu) 22:46 - ぅぁ〜

またライブラリのバグ‥‥‥っていうか,Perlのバグが(^^;
特定の文字列を特定の正規表現にマッチさせると必ず落ちるという.

正規表現の方は,EUCかSJISか判別するルーチンで使っているもので,

%RE =
(
ASCII => '[\x00-\x7f]',
EUC_0212 => '\x8f[\xa1-\xfe][\xa1-\xfe]',
EUC_C => '[\xa1-\xfe][\xa1-\xfe]',
EUC_KANA => '\x8e[\xa1-\xdf]',
);

if($str =~
m/^(?:$RE{ASCII}|$RE{EUC_0212}|$RE{EUC_KANA}|$RE{EUC_C})+$/o)


こんな感じです.

普通にマッチさせてるだけなのですが,$str の内容によって,
Perl がいきなり終了することがあるようです.
再現するときは確実に再現します(^^;
(けど,文字列マッチを行う前の処理の影響もあるっぽく,
 そこだけ抜き出すとアウトだったり.(謎))

5.6.0では,正規表現で一定長以上にマッチさえると
落ちるのは確認しましたが,5.6.1で直っていたと思ったのに‥‥‥.

とりあえず,長い文字列を正規表現一発でマッチさせるのは
なんか危険っぽい感じですね.(^^;
む〜



2024年10月
29
0
30
0
01
0
02
0
03
0
04
0
05
0
06
0
07
0
08
0
09
0
10
0
11
0
12
0
13
0
14
0
15
0
16
0
17
0
18
0
19
0
20
0
21
0
22
0
23
0
24
0
25
0
26
0
27
0
28
0
29
0
30
0
31
0
01
0
02
0

TmmDiary / Copyright 2001 Ymirlink,Inc. & Mikage Sawatari
このアドレスにはメールを送らないで下さい.
Don't send mail to this address.
hina@mikage.to