[前][次][番号順一覧][スレッド一覧]

ruby-changes:17032

From: yugui <ko1@a...>
Date: Wed, 18 Aug 2010 14:42:54 +0900 (JST)
Subject: [ruby-changes:17032] Ruby:r29029 (ruby_1_9_2): merges r29023 from trunk into ruby_1_9_2.

yugui	2010-08-18 14:42:40 +0900 (Wed, 18 Aug 2010)

  New Revision: 29029

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29029

  Log:
    merges r29023 from trunk into ruby_1_9_2.
    --
    * regcomp.c: revert r26701; it introduces Bug #3681.
      [ruby-core:31677]

  Modified files:
    branches/ruby_1_9_2/ChangeLog
    branches/ruby_1_9_2/regcomp.c
    branches/ruby_1_9_2/test/ruby/test_regexp.rb

Index: ruby_1_9_2/regcomp.c
===================================================================
--- ruby_1_9_2/regcomp.c	(revision 29028)
+++ ruby_1_9_2/regcomp.c	(revision 29029)
@@ -3671,7 +3671,6 @@
 #define IN_NOT        (1<<1)
 #define IN_REPEAT     (1<<2)
 #define IN_VAR_REPEAT (1<<3)
-#define IN_LAST	      (1<<4)
 
 /* setup_tree does the following work.
  1. check empty loop. (set qn->target_empty_info)
@@ -3693,8 +3692,7 @@
     {
       Node* prev = NULL_NODE;
       do {
-	int s = IS_NOT_NULL(NCDR(node)) ? (state & ~IN_LAST) : state;
-	r = setup_tree(NCAR(node), reg, s, env);
+	r = setup_tree(NCAR(node), reg, state, env);
 	if (IS_NOT_NULL(prev) && r == 0) {
 	  r = next_setup(prev, NCAR(node), reg);
 	}
@@ -3825,20 +3823,6 @@
 	}
       }
 #endif
-
-      if ((state & IN_LAST) != 0 && qn->greedy && IS_REPEAT_INFINITE(qn->upper)) {
-	/* automatic posseivation a* (at last) ==> (?>a*) */
-	if (qn->lower <= 1) {
-	  int ttype = NTYPE(qn->target);
-	  if (IS_NODE_TYPE_SIMPLE(ttype)) {
-	    Node* en = onig_node_new_enclose(ENCLOSE_STOP_BACKTRACK);
-	    CHECK_NULL_RETURN_MEMERR(en);
-	    SET_ENCLOSE_STATUS(en, NST_STOP_BT_SIMPLE_REPEAT);
-	    swap_node(node, en);
-	    NENCLOSE(node)->target = en;
-	  }
-	}
-      }
     }
     break;
 
@@ -5393,7 +5377,7 @@
     reg->num_call = 0;
 #endif
 
-  r = setup_tree(root, reg, IN_LAST, &scan_env);
+  r = setup_tree(root, reg, 0, &scan_env);
   if (r != 0) goto err_unset;
 
 #ifdef ONIG_DEBUG_PARSE_TREE
Index: ruby_1_9_2/ChangeLog
===================================================================
--- ruby_1_9_2/ChangeLog	(revision 29028)
+++ ruby_1_9_2/ChangeLog	(revision 29029)
@@ -1,3 +1,8 @@
+Wed Aug 18 01:37:49 2010  NARUSE, Yui  <naruse@r...>
+
+	* regcomp.c: revert r26701; it introduces Bug #3681.
+	  [ruby-core:31677]
+
 Mon Aug 16 23:16:21 2010  Yusuke Endoh  <mame@t...>
 
 	* NEWS: updated.  a patch from Kazuhiro NISHIYAMA in [ruby-dev:42001].
Index: ruby_1_9_2/test/ruby/test_regexp.rb
===================================================================
--- ruby_1_9_2/test/ruby/test_regexp.rb	(revision 29028)
+++ ruby_1_9_2/test/ruby/test_regexp.rb	(revision 29029)
@@ -816,6 +816,7 @@
     assert_nothing_raised { s.match(/(\d) (.*)/) }
     assert_equal("1", $1)
     assert_equal(" " * 4999999, $2)
+    assert_match(/(?:A.+){2}/, 'AbAb')
   end
 
   def test_invalid_fragment

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]