Skip to content

Commit

Permalink
This commit was generated by cvs2svn to compensate for changes in r6231,
Browse files Browse the repository at this point in the history
which included commits to RCS files with non-trunk default branches.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
ksaito committed Apr 27, 2004
1 parent 4e85c03 commit 8032791
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 25 deletions.
27 changes: 11 additions & 16 deletions regcomp.c
Original file line number Diff line number Diff line change
Expand Up @@ -3950,22 +3950,17 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
}
}

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 (! 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 (mb_found) {
Expand Down
40 changes: 32 additions & 8 deletions regexec.c
Original file line number Diff line number Diff line change
Expand Up @@ -362,11 +362,26 @@ 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)
{
int n;
unsigned int n;
StackType *x, *stk_base, *stk_end, *stk;

stk_base = *arg_stk_base;
Expand All @@ -385,7 +400,12 @@ stack_double(StackType** arg_stk_base, StackType** arg_stk_end,
}
else {
n *= 2;
if (n > MATCH_STACK_LIMIT_SIZE) return ONIGERR_MATCH_STACK_LIMIT_OVER;
if (MatchStackLimitSize != 0 && n > MatchStackLimitSize) {
if ((unsigned int )(stk_end - stk_base) == MatchStackLimitSize)
return ONIGERR_MATCH_STACK_LIMIT_OVER;
else
n = MatchStackLimitSize;
}
x = (StackType* )xrealloc(stk_base, sizeof(StackType) * n);
if (IS_NULL(x)) {
STACK_SAVE;
Expand Down Expand Up @@ -2573,11 +2593,13 @@ bm_search_notrev(regex_t* reg, UChar* target, UChar* target_end,
if (t < target) return p + 1;

skip = reg->map[*s];
p++;
p = s + 1;
if (p >= text_end) return (UChar* )NULL;
t = p;
while ((p - t) < skip) {
do {
p += enc_len(reg->enc, *p);
}
} while ((p - t) < skip && p < text_end);

s += (p - t);
}
}
Expand All @@ -2591,11 +2613,13 @@ bm_search_notrev(regex_t* reg, UChar* target, UChar* target_end,
if (t < target) return p + 1;

skip = reg->int_map[*s];
p++;
p = s + 1;
if (p >= text_end) return (UChar* )NULL;
t = p;
while ((p - t) < skip) {
do {
p += enc_len(reg->enc, *p);
}
} while ((p - t) < skip && p < text_end);

s += (p - t);
}
}
Expand Down
2 changes: 1 addition & 1 deletion regint.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
#define USE_QUALIFIER_PEEK_NEXT

#define INIT_MATCH_STACK_SIZE 160
#define MATCH_STACK_LIMIT_SIZE 500000
#define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */

/* interface to external system */
#ifdef NOT_RUBY /* gived from Makefile */
Expand Down

0 comments on commit 8032791

Please sign in to comment.