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

ruby-changes:23047

From: naruse <ko1@a...>
Date: Wed, 21 Mar 2012 19:53:19 +0900 (JST)
Subject: [ruby-changes:23047] naruse:r35097 (trunk): * regcomp.c: Merge Onigmo 3d855b30d574536d3ae600260208c6624ae4791c.

naruse	2012-03-21 19:53:06 +0900 (Wed, 21 Mar 2012)

  New Revision: 35097

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

  Log:
    * regcomp.c: Merge Onigmo 3d855b30d574536d3ae600260208c6624ae4791c.
      [Bug#6143] [Bug#6144] [Bug#6145]

  Modified files:
    trunk/ChangeLog
    trunk/regerror.c
    trunk/regexec.c
    trunk/regparse.c

Index: regparse.c
===================================================================
--- regparse.c	(revision 35096)
+++ regparse.c	(revision 35097)
@@ -5015,6 +5015,8 @@
 	  num = backs[0];       /* XXX: use left most named group as Perl */
 	}
 #endif
+	else
+	  return ONIGERR_INVALID_CONDITION_PATTERN;
 	*np = node_new_enclose(ENCLOSE_CONDITION);
 	CHECK_NULL_RETURN_MEMERR(*np);
 	NENCLOSE(*np)->regnum = num;
@@ -5975,7 +5977,8 @@
             *np = node_new_cclass();
             CHECK_NULL_RETURN_MEMERR(*np);
             cc = NCCLASS(*np);
-            add_ctype_to_cc(cc, tok->u.prop.ctype, 0, 0, env);
+            r = add_ctype_to_cc(cc, tok->u.prop.ctype, 0, 0, env);
+	    if (r != 0) return r;
             if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc);
 #ifdef USE_SHARED_CCLASS_TABLE
           }
@@ -6005,6 +6008,7 @@
 
       cc = NCCLASS(*np);
       if (is_onechar_cclass(cc, &code)) {
+	onig_node_free(*np);
 	*np = node_new_empty();
 	CHECK_NULL_RETURN_MEMERR(*np);
 	r = node_str_cat_codepoint(*np, env->enc, code);
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 35096)
+++ ChangeLog	(revision 35097)
@@ -1,3 +1,8 @@
+Wed Mar 21 17:57:57 2012  NARUSE, Yui  <naruse@r...>
+
+	* regcomp.c: Merge Onigmo 3d855b30d574536d3ae600260208c6624ae4791c.
+	  [Bug#6143] [Bug#6144] [Bug#6145]
+
 Wed Mar 21 17:01:55 2012  NAKAMURA Usaku  <usa@r...>
 
 	* test/ruby/test_io.rb (TestIO#test_pos_with_getc): added.
Index: regerror.c
===================================================================
--- regerror.c	(revision 35096)
+++ regerror.c	(revision 35097)
@@ -116,7 +116,7 @@
   case ONIGERR_INVALID_REPEAT_RANGE_PATTERN:
     p = "invalid repeat range {lower,upper}"; break;
   case ONIGERR_INVALID_CONDITION_PATTERN:
-    p = "invalid condition pattern"; break;
+    p = "invalid conditional pattern"; break;
   case ONIGERR_TOO_BIG_NUMBER:
     p = "too big number"; break;
   case ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE:
Index: regexec.c
===================================================================
--- regexec.c	(revision 35096)
+++ regexec.c	(revision 35097)
@@ -446,16 +446,16 @@
 
 #define STACK_INIT(alloc_addr, ptr_num, stack_num)  do {\
   if (msa->stack_p) {\
-    alloc_addr = (char* )xalloca(sizeof(char*) * (ptr_num));\
+    alloc_addr = (char* )xalloca(sizeof(OnigStackIndex) * (ptr_num));\
     stk_alloc  = (OnigStackType* )(msa->stack_p);\
     stk_base   = stk_alloc;\
     stk        = stk_base;\
     stk_end    = stk_base + msa->stack_n;\
   }\
   else {\
-    alloc_addr = (char* )xalloca(sizeof(char*) * (ptr_num)\
+    alloc_addr = (char* )xalloca(sizeof(OnigStackIndex) * (ptr_num)\
 		       + sizeof(OnigStackType) * (stack_num));\
-    stk_alloc  = (OnigStackType* )(alloc_addr + sizeof(char*) * (ptr_num));\
+    stk_alloc  = (OnigStackType* )(alloc_addr + sizeof(OnigStackIndex) * (ptr_num));\
     stk_base   = stk_alloc;\
     stk        = stk_base;\
     stk_end    = stk_base + (stack_num);\

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

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