mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* regex.c (re_compile_pattern): give warning for unescaped square
brackets and minus in character class. [ruby-dev:19868] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
dfb2c7aa14
commit
1714176963
3 changed files with 21 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
Fri Mar 21 23:23:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* regex.c (re_compile_pattern): give warning for unescaped square
|
||||
brackets and minus in character class. [ruby-dev:19868]
|
||||
|
||||
Fri Mar 21 18:12:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
|
||||
|
||||
* eval.c (bmcall): missing type.
|
||||
|
|
6
eval.c
6
eval.c
|
@ -7284,8 +7284,10 @@ static VALUE
|
|||
bmcall(args, method)
|
||||
VALUE args, method;
|
||||
{
|
||||
volatile VALUE args2 = svalue_to_avalue(args);
|
||||
return method_call(RARRAY(args2)->len, RARRAY(args2)->ptr, method);
|
||||
volatile VALUE a;
|
||||
|
||||
a = svalue_to_avalue(args);
|
||||
return method_call(RARRAY(a)->len, RARRAY(a)->ptr, method);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
|
12
regex.c
12
regex.c
|
@ -185,6 +185,11 @@ static int current_mbctype = MBCTYPE_ASCII;
|
|||
|
||||
#ifdef RUBY
|
||||
#include "util.h"
|
||||
# re_warning(x) rb_warn(x)
|
||||
#endif
|
||||
|
||||
#ifndef re_warning
|
||||
# define re_warning(x)
|
||||
#endif
|
||||
|
||||
static void
|
||||
|
@ -1464,6 +1469,7 @@ re_compile_pattern(pattern, size, bufp)
|
|||
if (p == p0 + 1) {
|
||||
if (p == pend)
|
||||
FREE_AND_RETURN(stackb, "invalid regular expression; empty character class");
|
||||
re_warning("character class has `]' without escape");
|
||||
}
|
||||
else
|
||||
/* Stop if this isn't merely a ] inside a bracket
|
||||
|
@ -1481,6 +1487,9 @@ re_compile_pattern(pattern, size, bufp)
|
|||
}
|
||||
had_char_class = 0;
|
||||
|
||||
if (c == '-')
|
||||
re_warning("character class has `-' without escape");
|
||||
|
||||
/* \ escapes characters when inside [...]. */
|
||||
if (c == '\\') {
|
||||
PATFETCH_RAW(c);
|
||||
|
@ -1678,6 +1687,7 @@ re_compile_pattern(pattern, size, bufp)
|
|||
c1++;
|
||||
while (c1--)
|
||||
PATUNFETCH;
|
||||
re_warning("character class has `[' without escape");
|
||||
SET_LIST_BIT(TRANSLATE_P()?translate['[']:'[');
|
||||
SET_LIST_BIT(TRANSLATE_P()?translate[':']:':');
|
||||
had_char_class = 0;
|
||||
|
@ -1685,6 +1695,8 @@ re_compile_pattern(pattern, size, bufp)
|
|||
}
|
||||
}
|
||||
else if (had_mbchar == 0 && (!current_mbctype || !had_num_literal)) {
|
||||
if (c == '[')
|
||||
re_warning("character class has `[' without escape");
|
||||
SET_LIST_BIT(c);
|
||||
had_num_literal = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue