* 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:
matz 2003-03-21 14:37:32 +00:00
Родитель dfb2c7aa14
Коммит 1714176963
3 изменённых файлов: 21 добавлений и 2 удалений

Просмотреть файл

@ -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
Просмотреть файл

@ -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
Просмотреть файл

@ -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;
}