diff options
author | ksaito <ksaito@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-04-27 16:04:30 +0000 |
---|---|---|
committer | ksaito <ksaito@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-04-27 16:04:30 +0000 |
commit | 079219a90c043d11097247c02feb2cfa7620ff9b (patch) | |
tree | 858f9c0ecbd06b8540e191ca95a5a965d4356473 | |
parent | bb5b3f4f8fa4d4a4d959caa9de0e2dd75b8bf821 (diff) | |
download | ruby-079219a90c043d11097247c02feb2cfa7620ff9b.tar.gz |
reimported Oni Guruma 2.2.7 again (sorry)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/KOSAKO@6227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | oniguruma.h | 6 | ||||
-rw-r--r-- | regcomp.c | 27 | ||||
-rw-r--r-- | regexec.c | 40 | ||||
-rw-r--r-- | regint.h | 2 |
4 files changed, 26 insertions, 49 deletions
diff --git a/oniguruma.h b/oniguruma.h index 3fd9f4c395..3170432769 100644 --- a/oniguruma.h +++ b/oniguruma.h @@ -11,7 +11,7 @@ #define ONIGURUMA #define ONIGURUMA_VERSION_MAJOR 2 #define ONIGURUMA_VERSION_MINOR 2 -#define ONIGURUMA_VERSION_TEENY 8 +#define ONIGURUMA_VERSION_TEENY 7 #ifndef P_ #if defined(__STDC__) || defined(_WIN32) @@ -716,10 +716,6 @@ void onig_set_syntax_options P_((OnigSyntaxType* syntax, OnigOptionType options) ONIG_EXTERN int onig_set_meta_char P_((unsigned int what, OnigCodePoint code)); ONIG_EXTERN -unsigned int onig_get_match_stack_limit_size P_((void)); -ONIG_EXTERN -int onig_set_match_stack_limit_size P_((unsigned int size)); -ONIG_EXTERN int onig_end P_((void)); ONIG_EXTERN const char* onig_version P_((void)); @@ -3950,17 +3950,22 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) } } - if (! ONIGENC_IS_SINGLEBYTE(env->enc)) { - if (! IS_NULL(cc->mbuf) || - (cc->not != 0 && found != 0)) { - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - z = ONIGENC_IS_MBC_HEAD(env->enc, i); - if (z) { - mb_found = 1; - add_char_opt_map_info(&opt->map, i); - } - } - } + if (IS_NULL(cc->mbuf)) { + if (cc->not) { + for (i = 0; i < SINGLE_BYTE_SIZE; i++) { + add_char_opt_map_info(&opt->map, i); + } + mb_found = 1; + } + } + else { + for (i = 0; i < SINGLE_BYTE_SIZE; i++) { + z = ONIGENC_IS_MBC_HEAD(env->enc, i); + if (z) { + mb_found = 1; + add_char_opt_map_info(&opt->map, i); + } + } } if (mb_found) { @@ -362,26 +362,11 @@ typedef struct { };\ } while(0) -static unsigned int MatchStackLimitSize = DEFAULT_MATCH_STACK_LIMIT_SIZE; - -extern unsigned int -onig_get_match_stack_limit_size(void) -{ - return MatchStackLimitSize; -} - -extern int -onig_set_match_stack_limit_size(unsigned int size) -{ - MatchStackLimitSize = size; - return 0; -} - static int stack_double(StackType** arg_stk_base, StackType** arg_stk_end, StackType** arg_stk, StackType* stk_alloc, MatchArg* msa) { - unsigned int n; + int n; StackType *x, *stk_base, *stk_end, *stk; stk_base = *arg_stk_base; @@ -400,12 +385,7 @@ stack_double(StackType** arg_stk_base, StackType** arg_stk_end, } else { n *= 2; - if (MatchStackLimitSize != 0 && n > MatchStackLimitSize) { - if ((unsigned int )(stk_end - stk_base) == MatchStackLimitSize) - return ONIGERR_MATCH_STACK_LIMIT_OVER; - else - n = MatchStackLimitSize; - } + if (n > MATCH_STACK_LIMIT_SIZE) return ONIGERR_MATCH_STACK_LIMIT_OVER; x = (StackType* )xrealloc(stk_base, sizeof(StackType) * n); if (IS_NULL(x)) { STACK_SAVE; @@ -2593,13 +2573,11 @@ bm_search_notrev(regex_t* reg, UChar* target, UChar* target_end, if (t < target) return p + 1; skip = reg->map[*s]; - p = s + 1; - if (p >= text_end) return (UChar* )NULL; + p++; t = p; - do { + while ((p - t) < skip) { p += enc_len(reg->enc, *p); - } while ((p - t) < skip && p < text_end); - + } s += (p - t); } } @@ -2613,13 +2591,11 @@ bm_search_notrev(regex_t* reg, UChar* target, UChar* target_end, if (t < target) return p + 1; skip = reg->int_map[*s]; - p = s + 1; - if (p >= text_end) return (UChar* )NULL; + p++; t = p; - do { + while ((p - t) < skip) { p += enc_len(reg->enc, *p); - } while ((p - t) < skip && p < text_end); - + } s += (p - t); } } @@ -46,7 +46,7 @@ #define USE_QUALIFIER_PEEK_NEXT #define INIT_MATCH_STACK_SIZE 160 -#define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */ +#define MATCH_STACK_LIMIT_SIZE 500000 /* interface to external system */ #ifdef NOT_RUBY /* gived from Makefile */ |