diff options
author | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-01-21 16:38:43 +0000 |
---|---|---|
committer | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-01-21 16:38:43 +0000 |
commit | 76f8576ee32f8c6bfcdfe0149dd2e4e1cb985f13 (patch) | |
tree | dee95a0439b1ac266ceb806daed706a9c65745c9 /regex.c | |
parent | [w3m-dev 02877] some fixes for urimethodmap (diff) | |
download | w3m-76f8576ee32f8c6bfcdfe0149dd2e4e1cb985f13.tar.gz w3m-76f8576ee32f8c6bfcdfe0149dd2e4e1cb985f13.zip |
[w3m-dev 02878] fix regexp [-...], [...-], []...]
* regexp.c (newRegex0): if first char is `-' or ']' after '[',
it isn't meta char.
if last char in [..] is `-', it isn't meta char.
From: Fumitoshi UKAI <ukai@debian.or.jp>
Diffstat (limited to '')
-rw-r--r-- | regex.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -1,4 +1,4 @@ -/* $Id: regex.c,v 1.14 2002/01/21 15:56:13 ukai Exp $ */ +/* $Id: regex.c,v 1.15 2002/01/21 16:38:43 ukai Exp $ */ /* * regex: Regular expression pattern match library * @@ -150,6 +150,8 @@ newRegex0(char **ex, int igncase, Regex *regex, char **msg, int level) } else m = RE_WHICH; + if (*p == '-' || *p == ']') + *(st_ptr++) = (unsigned char)*(p++); while (*p != ']') { if (*p == '\\') { p++; @@ -162,7 +164,7 @@ newRegex0(char **ex, int igncase, Regex *regex, char **msg, int level) #endif *(st_ptr++) = (unsigned char)*(p++); } - else if (*p == '-') { + else if (*p == '-' && *(p+1) != ']') { *(st_ptr++) = RE_WHICH_RANGE; p++; } |