Skip to content

Commit

Permalink
Remove str_len parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
k-takata committed Jul 30, 2014
1 parent 6185e9d commit a36f3e1
Showing 1 changed file with 18 additions and 25 deletions.
43 changes: 18 additions & 25 deletions regcomp.c
Original file line number Diff line number Diff line change
Expand Up @@ -324,15 +324,18 @@ static int compile_tree(Node* node, regex_t* reg);
(op) == OP_EXACTMB3N || (op) == OP_EXACTMBN || (op) == OP_EXACTN_IC)

static int
select_str_opcode(int mb_len, OnigDistance str_len, int ignore_case)
select_str_opcode(int mb_len, OnigDistance byte_len, int ignore_case)
{
int op;
OnigDistance str_len = byte_len / mb_len;

if (ignore_case) {
switch (str_len) {
case 1: op = OP_EXACT1_IC; break;
default: op = OP_EXACTN_IC; break;
}
if (byte_len > str_len * mb_len)
op = OP_EXACTN_IC;
}
else {
switch (mb_len) {
Expand Down Expand Up @@ -428,12 +431,11 @@ compile_tree_n_times(Node* node, int n, regex_t* reg)
}

static int
add_compile_string_length(UChar* s ARG_UNUSED, int mb_len, OnigDistance str_len,
OnigDistance byte_len,
add_compile_string_length(UChar* s ARG_UNUSED, int mb_len, OnigDistance byte_len,
regex_t* reg ARG_UNUSED, int ignore_case)
{
int len;
int op = select_str_opcode(mb_len, str_len, ignore_case);
int op = select_str_opcode(mb_len, byte_len, ignore_case);

len = SIZE_OPCODE;

Expand All @@ -446,11 +448,10 @@ add_compile_string_length(UChar* s ARG_UNUSED, int mb_len, OnigDistance str_len,
}

static int
add_compile_string(UChar* s, int mb_len, OnigDistance str_len,
OnigDistance byte_len,
add_compile_string(UChar* s, int mb_len, OnigDistance byte_len,
regex_t* reg, int ignore_case)
{
int op = select_str_opcode(mb_len, str_len, ignore_case);
int op = select_str_opcode(mb_len, byte_len, ignore_case);
add_opcode(reg, op);

if (op == OP_EXACTMBN)
Expand All @@ -460,7 +461,7 @@ add_compile_string(UChar* s, int mb_len, OnigDistance str_len,
if (op == OP_EXACTN_IC)
add_length(reg, byte_len);
else
add_length(reg, str_len);
add_length(reg, byte_len / mb_len);
}

add_bytes(reg, s, byte_len);
Expand All @@ -471,7 +472,7 @@ add_compile_string(UChar* s, int mb_len, OnigDistance str_len,
static int
compile_length_string_node(Node* node, regex_t* reg)
{
int rlen, r, len, prev_len, slen, blen, ambig;
int rlen, r, len, prev_len, blen, ambig;
OnigEncoding enc = reg->enc;
UChar *p, *prev;
StrNode* sn;
Expand All @@ -485,27 +486,24 @@ compile_length_string_node(Node* node, regex_t* reg)
p = prev = sn->s;
prev_len = enclen(enc, p);
p += prev_len;
slen = 1;
rlen = 0;
blen = prev_len;
rlen = 0;

for (; p < sn->end; ) {
len = enclen(enc, p);
if (len == prev_len || ambig) {
slen++;
blen += len;
}
else {
r = add_compile_string_length(prev, prev_len, slen, blen, reg, ambig);
r = add_compile_string_length(prev, prev_len, blen, reg, ambig);
rlen += r;
prev = p;
slen = 1;
blen = len;
prev_len = len;
}
p += len;
}
r = add_compile_string_length(prev, prev_len, slen, blen, reg, ambig);
r = add_compile_string_length(prev, prev_len, blen, reg, ambig);
rlen += r;
return rlen;
}
Expand All @@ -516,14 +514,13 @@ compile_length_string_raw_node(StrNode* sn, regex_t* reg)
if (sn->end <= sn->s)
return 0;

return add_compile_string_length(sn->s, 1 /* sb */, sn->end - sn->s,
sn->end - sn->s, reg, 0);
return add_compile_string_length(sn->s, 1 /* sb */, sn->end - sn->s, reg, 0);
}

static int
compile_string_node(Node* node, regex_t* reg)
{
int r, len, prev_len, slen, blen, ambig;
int r, len, prev_len, blen, ambig;
OnigEncoding enc = reg->enc;
UChar *p, *prev, *end;
StrNode* sn;
Expand All @@ -538,28 +535,25 @@ compile_string_node(Node* node, regex_t* reg)
p = prev = sn->s;
prev_len = enclen(enc, p);
p += prev_len;
slen = 1;
blen = prev_len;

for (; p < end; ) {
len = enclen(enc, p);
if (len == prev_len || ambig) {
slen++;
blen += len;
}
else {
r = add_compile_string(prev, prev_len, slen, blen, reg, ambig);
r = add_compile_string(prev, prev_len, blen, reg, ambig);
if (r) return r;

prev = p;
slen = 1;
blen = len;
prev_len = len;
}

p += len;
}
return add_compile_string(prev, prev_len, slen, blen, reg, ambig);
return add_compile_string(prev, prev_len, blen, reg, ambig);
}

static int
Expand All @@ -568,8 +562,7 @@ compile_string_raw_node(StrNode* sn, regex_t* reg)
if (sn->end <= sn->s)
return 0;

return add_compile_string(sn->s, 1 /* sb */, sn->end - sn->s,
sn->end - sn->s, reg, 0);
return add_compile_string(sn->s, 1 /* sb */, sn->end - sn->s, reg, 0);
}

static int
Expand Down

0 comments on commit a36f3e1

Please sign in to comment.