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/