]> git.eshelyaron.com Git - emacs.git/commitdiff
(GET_UNSIGNED_NUMBER): Signal an error when reaching the end.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 6 Dec 2004 00:41:40 +0000 (00:41 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 6 Dec 2004 00:41:40 +0000 (00:41 +0000)
Remove redundant correctness checks.
(regex_compile): Fix up error codes for \{..\} expressions.

src/ChangeLog
src/regex.c

index d21df41fe56c6e9af0e3505fff01b4c48cc4b3bc..17dc673c681b971de4ebd32223941c7b0ef6f10b 100644 (file)
@@ -1,3 +1,9 @@
+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.
index 130765134f52f2496c4aabfeaa7877b98a224d3b..1009c837dcf34bee521af6448f892472ef4de7bd 100644 (file)
@@ -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)
 \f
 #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);
                  }