In perl.git, the branch yves/exactish_with_min_len has been updated <http://perl5.git.perl.org/perl.git/commitdiff/ab79ecc9d7bcb01df86abda790b94ab411e18235?hp=4c29c902b7533043baba4bb5f8ce1d0b3ba1e260>
- Log ----------------------------------------------------------------- commit ab79ecc9d7bcb01df86abda790b94ab411e18235 Author: Yves Orton <[email protected]> Date: Mon Mar 19 17:33:22 2012 +0100 WIP ----------------------------------------------------------------------- Summary of changes: regcomp.c | 2 +- regcomp.h | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/regcomp.c b/regcomp.c index d548654..c154e99 100644 --- a/regcomp.c +++ b/regcomp.c @@ -2688,7 +2688,7 @@ S_join_exact(pTHX_ RExC_state_t *pRExC_state, regnode *scan, UV *min_subtract, b const unsigned int oldl = STR_LEN(scan); regnode * const nnext = regnext(n); - if (oldl + STR_LEN(n) > U8_MAX) + if (oldl + STR_LEN(n) > EXACT_STR_LEN_MAX) break; DEBUG_PEEP("merg",n,depth); diff --git a/regcomp.h b/regcomp.h index 8822d4d..a8e9d0e 100644 --- a/regcomp.h +++ b/regcomp.h @@ -140,13 +140,15 @@ typedef OP OP_4tree; /* Will be redefined later. */ #define PREGf_CUTGROUP_SEEN 0x00000010 +#define EXACT_STR_LEN U16 +#define EXACT_STR_LEN_MAX U16_MAX /* this is where the old regcomp.h started */ - struct regnode_string { - U8 str_len; + U8 flags; U8 type; U16 next_off; - U8 min_len; + EXACT_STR_LEN str_len; + EXACT_STR_LEN min_len; char string[1]; }; @@ -262,7 +264,7 @@ struct regnode_charclass_class { #define STR_LEN(p) (((struct regnode_string *)p)->str_len) #define MIN_LEN(p) (((struct regnode_string *)p)->min_len) #define STRING(p) (((struct regnode_string *)p)->string) -#define STR_SZ(l) ((l + sizeof(regnode) ) / sizeof(regnode)) +#define STR_SZ(l) ((l + sizeof(regnode) * 2 - 1 ) / sizeof(regnode)) #define NODE_SZ_STR(p) (STR_SZ(STR_LEN(p))+1) #undef NODE_ALIGN -- Perl5 Master Repository
