Commit c72b0edd authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(GET_UNSIGNED_NUMBER): Signal an error when reaching the end.

Remove redundant correctness checks.
(regex_compile): Fix up error codes for \{..\} expressions.
parent 952cb084
2004-12-05 Stefan Monnier <monnier@iro.umontreal.ca>
* regex.c (GET_UNSIGNED_NUMBER): Signal an error when reaching the end.
Remove redundant correctness checks.
(regex_compile): Fix up error codes for \{..\} expressions.
2004-12-05 Richard M. Stallman <rms@gnu.org>
 
* regex.c (regex_compile): Fix end-of-pattern case for space.
......
......@@ -1950,28 +1950,27 @@ struct range_table_work_area
/* Get the next unsigned number in the uncompiled pattern. */
#define GET_UNSIGNED_NUMBER(num) \
do { if (p != pend) \
{ \
PATFETCH (c); \
if (c == ' ') \
FREE_STACK_RETURN (REG_BADBR); \
while ('0' <= c && c <= '9') \
{ \
int prev; \
if (num < 0) \
num = 0; \
prev = num; \
num = num * 10 + c - '0'; \
if (num / 10 != prev) \
FREE_STACK_RETURN (REG_BADBR); \
if (p == pend) \
break; \
PATFETCH (c); \
} \
if (c == ' ') \
FREE_STACK_RETURN (REG_BADBR); \
} \
} while (0)
do { \
if (p == pend) \
FREE_STACK_RETURN (REG_EBRACE); \
else \
{ \
PATFETCH (c); \
while ('0' <= c && c <= '9') \
{ \
int prev; \
if (num < 0) \
num = 0; \
prev = num; \
num = num * 10 + c - '0'; \
if (num / 10 != prev) \
FREE_STACK_RETURN (REG_BADBR); \
if (p == pend) \
FREE_STACK_RETURN (REG_EBRACE); \
PATFETCH (c); \
} \
} \
} while (0)
#if ! WIDE_CHAR_SUPPORT
......@@ -3234,9 +3233,6 @@ regex_compile (pattern, size, syntax, bufp)
beg_interval = p;
if (p == pend)
FREE_STACK_RETURN (REG_EBRACE);
GET_UNSIGNED_NUMBER (lower_bound);
if (c == ',')
......@@ -3253,7 +3249,8 @@ regex_compile (pattern, size, syntax, bufp)
{
if (c != '\\')
FREE_STACK_RETURN (REG_BADBR);
if (p == pend)
FREE_STACK_RETURN (REG_EESCAPE);
PATFETCH (c);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment