mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
* regcomp.c, regexec.c: Optimization should be disabled not only for
/(?<=x).*/ but also for /(?!x).*/. (merge r47598 partially. [Bug #9728]) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@47976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
4110e5fa62
commit
7e344b0b7b
4 changed files with 15 additions and 5 deletions
|
@ -1,3 +1,9 @@
|
|||
Thu Oct 16 16:33:51 2014 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||
|
||||
* regcomp.c, regexec.c: Optimization should be disabled not only for
|
||||
/(?<=x).*/ but also for /(?!x).*/.
|
||||
(merge r47598 partially. [Bug #9728])
|
||||
|
||||
Thu Oct 16 16:23:03 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
|
||||
|
||||
* lib/fileutils.rb: handle ENOENT error with symlink targeted to
|
||||
|
|
10
regcomp.c
10
regcomp.c
|
@ -4495,6 +4495,9 @@ concat_opt_anc_info(OptAncInfo* to, OptAncInfo* left, OptAncInfo* right,
|
|||
if (right_len == 0) {
|
||||
to->right_anchor |= left->right_anchor;
|
||||
}
|
||||
else {
|
||||
to->right_anchor |= (left->right_anchor & ANCHOR_PREC_READ_NOT);
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -5068,7 +5071,8 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
|
|||
case ANCHOR_END_BUF:
|
||||
case ANCHOR_SEMI_END_BUF:
|
||||
case ANCHOR_END_LINE:
|
||||
case ANCHOR_LOOK_BEHIND: /* just for (?<=x).* */
|
||||
case ANCHOR_LOOK_BEHIND: /* just for (?<=x).* */
|
||||
case ANCHOR_PREC_READ_NOT: /* just for (?!x).* */
|
||||
add_opt_anc_info(&opt->anc, NANCHOR(node)->type);
|
||||
break;
|
||||
|
||||
|
@ -5091,7 +5095,6 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
|
|||
}
|
||||
break;
|
||||
|
||||
case ANCHOR_PREC_READ_NOT:
|
||||
case ANCHOR_LOOK_BEHIND_NOT:
|
||||
break;
|
||||
}
|
||||
|
@ -5357,7 +5360,8 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env)
|
|||
ANCHOR_BEGIN_POSITION | ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML |
|
||||
ANCHOR_LOOK_BEHIND);
|
||||
|
||||
reg->anchor |= opt.anc.right_anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF);
|
||||
reg->anchor |= opt.anc.right_anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF |
|
||||
ANCHOR_PREC_READ_NOT);
|
||||
|
||||
if (reg->anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)) {
|
||||
reg->anchor_dmin = opt.len.min;
|
||||
|
|
|
@ -4157,7 +4157,7 @@ onig_search_gpos(regex_t* reg, const UChar* str, const UChar* end,
|
|||
prev = s;
|
||||
s += enclen(reg->enc, s, end);
|
||||
|
||||
if ((reg->anchor & ANCHOR_LOOK_BEHIND) == 0) {
|
||||
if ((reg->anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) == 0) {
|
||||
while (!ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, prev, str, end, reg->options, 0)
|
||||
&& s < range) {
|
||||
prev = s;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#define RUBY_VERSION "2.0.0"
|
||||
#define RUBY_RELEASE_DATE "2014-10-16"
|
||||
#define RUBY_PATCHLEVEL 586
|
||||
#define RUBY_PATCHLEVEL 587
|
||||
|
||||
#define RUBY_RELEASE_YEAR 2014
|
||||
#define RUBY_RELEASE_MONTH 10
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue