mirror of https://github.com/rusefi/lua.git
BUG: gsub('a', '(b?)%1*' ...) loops (because the capture is empty).
This commit is contained in:
parent
e74817f8aa
commit
be6d215f67
4
bugs
4
bugs
|
@ -33,3 +33,7 @@ Tue Jan 27 17:12:36 EDT 1998
|
||||||
Wed Jan 28 14:48:12 EDT 1998
|
Wed Jan 28 14:48:12 EDT 1998
|
||||||
>> tables can become full of "emptys" slots, and keep growing without limits.
|
>> tables can become full of "emptys" slots, and keep growing without limits.
|
||||||
|
|
||||||
|
** lstrlib.c
|
||||||
|
Mon Mar 9 15:26:09 EST 1998
|
||||||
|
>> gsub('a', '(b?)%1*' ...) loops (because the capture is empty).
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: lstrlib.c,v 1.9 1998/03/06 16:54:42 roberto Exp roberto $
|
** $Id: lstrlib.c,v 1.10 1998/03/06 18:47:42 roberto Exp roberto $
|
||||||
** Standard library for strings and pattern-matching
|
** Standard library for strings and pattern-matching
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -286,7 +286,7 @@ static char *match (char *s, char *p, struct Capture *cap)
|
||||||
switch (*ep) {
|
switch (*ep) {
|
||||||
case '*': { /* repetition */
|
case '*': { /* repetition */
|
||||||
char *res;
|
char *res;
|
||||||
if (s1 && (res = match(s1, p, cap)))
|
if (s1 && s1>s && (res = match(s1, p, cap)))
|
||||||
return res;
|
return res;
|
||||||
p=ep+1; goto init; /* else return match(s, ep+1, cap); */
|
p=ep+1; goto init; /* else return match(s, ep+1, cap); */
|
||||||
}
|
}
|
||||||
|
@ -300,7 +300,7 @@ static char *match (char *s, char *p, struct Capture *cap)
|
||||||
char *res;
|
char *res;
|
||||||
if ((res = match(s, ep+1, cap)) != 0)
|
if ((res = match(s, ep+1, cap)) != 0)
|
||||||
return res;
|
return res;
|
||||||
else if (s1) {
|
else if (s1 && s1>s) {
|
||||||
s = s1;
|
s = s1;
|
||||||
goto init; /* return match(s1, p, cap); */
|
goto init; /* return match(s1, p, cap); */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue