]> git.eshelyaron.com Git - emacs.git/commitdiff
(regex_compile): When checking after exactn
authorRichard M. Stallman <rms@gnu.org>
Wed, 6 May 1998 20:46:35 +0000 (20:46 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 6 May 1998 20:46:35 +0000 (20:46 +0000)
for a repetition operator, don't look beyond end of pattern arg.

src/regex.c

index bbbfcc9fe5440abda86adfaa1127682df18b3514..ed4cfc9d95ad171cb51d9410b98af5f02f5a1f29 100644 (file)
@@ -2,7 +2,7 @@
    0.12.  (Implements POSIX draft P10003.2/D11.2, except for
    internationalization features.)
 
-   Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -2907,14 +2907,14 @@ regex_compile (pattern, size, syntax, bufp)
              || *pending_exact >= (1 << BYTEWIDTH) - (p - p1)
 
              /* If followed by a repetition operator.  */
-             || *p == '*' || *p == '^'
+             || (p != pend && (*p == '*' || *p == '^'))
              || ((syntax & RE_BK_PLUS_QM)
-                 ? *p == '\\' && (p[1] == '+' || p[1] == '?')
-                 : (*p == '+' || *p == '?'))
+                 ? p + 1 < pend && *p == '\\' && (p[1] == '+' || p[1] == '?')
+                 : p != pend && (*p == '+' || *p == '?'))
              || ((syntax & RE_INTERVALS)
                  && ((syntax & RE_NO_BK_BRACES)
-                     ? *p == '{'
-                     : (p[0] == '\\' && p[1] == '{'))))
+                     ? p != pend && *p == '{'
+                     : p + 1 < pend && p[0] == '\\' && p[1] == '{')))
            {
              /* Start building a new exactn.  */