зеркало из https://github.com/github/ruby.git
* re.c (rb_reg_quote): use rb_enc_mbcput to generate ASCII
incompatible characters properly. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19369 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
b73891b5f1
Коммит
2e0a116dd5
|
@ -1,3 +1,8 @@
|
|||
Tue Sep 16 00:57:56 2008 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* re.c (rb_reg_quote): use rb_enc_mbcput to generate ASCII
|
||||
incompatible characters properly.
|
||||
|
||||
Tue Sep 16 00:51:59 2008 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* encoding.c (Encoding#base_encoding): removed. [ruby-dev:36270]
|
||||
|
|
28
re.c
28
re.c
|
@ -2860,34 +2860,34 @@ rb_reg_quote(VALUE str)
|
|||
case '*': case '.': case '\\':
|
||||
case '?': case '+': case '^': case '$':
|
||||
case '#':
|
||||
*t++ = '\\';
|
||||
t += rb_enc_mbcput('\\', t, enc);
|
||||
break;
|
||||
case ' ':
|
||||
*t++ = '\\';
|
||||
*t++ = ' ';
|
||||
t += rb_enc_mbcput('\\', t, enc);
|
||||
t += rb_enc_mbcput(' ', t, enc);
|
||||
continue;
|
||||
case '\t':
|
||||
*t++ = '\\';
|
||||
*t++ = 't';
|
||||
t += rb_enc_mbcput('\\', t, enc);
|
||||
t += rb_enc_mbcput('t', t, enc);
|
||||
continue;
|
||||
case '\n':
|
||||
*t++ = '\\';
|
||||
*t++ = 'n';
|
||||
t += rb_enc_mbcput('\\', t, enc);
|
||||
t += rb_enc_mbcput('n', t, enc);
|
||||
continue;
|
||||
case '\r':
|
||||
*t++ = '\\';
|
||||
*t++ = 'r';
|
||||
t += rb_enc_mbcput('\\', t, enc);
|
||||
t += rb_enc_mbcput('r', t, enc);
|
||||
continue;
|
||||
case '\f':
|
||||
*t++ = '\\';
|
||||
*t++ = 'f';
|
||||
t += rb_enc_mbcput('\\', t, enc);
|
||||
t += rb_enc_mbcput('f', t, enc);
|
||||
continue;
|
||||
case '\v':
|
||||
*t++ = '\\';
|
||||
*t++ = 'v';
|
||||
t += rb_enc_mbcput('\\', t, enc);
|
||||
t += rb_enc_mbcput('v', t, enc);
|
||||
continue;
|
||||
}
|
||||
*t++ = c;
|
||||
t += rb_enc_mbcput(c, t, enc);
|
||||
}
|
||||
rb_str_resize(tmp, t - RSTRING_PTR(tmp));
|
||||
OBJ_INFECT(tmp, str);
|
||||
|
|
|
@ -355,4 +355,10 @@ EOT
|
|||
assert_equal("", sl.chop)
|
||||
assert_equal("", sb.chop)
|
||||
end
|
||||
|
||||
def test_regexp_escape
|
||||
s = "\0*".force_encoding("UTF-16BE")
|
||||
r = Regexp.new(Regexp.escape(s))
|
||||
assert(r =~ s)
|
||||
end
|
||||
end
|
||||
|
|
Загрузка…
Ссылка в новой задаче