more accurate icnt for rep operator

This commit is contained in:
Kyryl Melekhin
2021-07-18 23:53:06 +00:00
parent 001ae2393b
commit 1e32e0d586
2 changed files with 7 additions and 2 deletions

6
pike.c
View File

@@ -290,7 +290,7 @@ static int _compilecode(const char **re_loc, rcode *prog, int sizecode)
break;
case '{':;
int maxcnt = 0, mincnt = 0,
i = 0, icnt = 1, size, split;
i = 0, icnt = 0, size, split;
re++;
while (isdigit((unsigned char) *re))
mincnt = mincnt * 10 + *re++ - '0';
@@ -319,13 +319,15 @@ static int _compilecode(const char **re_loc, rcode *prog, int sizecode)
}
if (code) {
for (i = 0; i < size; i++)
switch (code[term]) {
switch (code[term+i]) {
case CLASS:
i += code[term+i+2] * 2 + 1;
case JMP:
case SPLIT:
case RSPLIT:
case SAVE:
case CHAR:
i++;
icnt++;
}
}