(re_search_2): Optimize searching for anchored
authordrepper <drepper>
Mon, 3 Aug 1998 16:43:07 +0000 (16:43 +0000)
committerdrepper <drepper>
Mon, 3 Aug 1998 16:43:07 +0000 (16:43 +0000)
pattern if '^' cannot match at embedded newlines.
(regerror): Renamed from __regerror, which it should only be
alled if _LIBC.

posix/regex.c

index 62c41c1..484e13d 100644 (file)
@@ -3525,7 +3525,11 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop)
 
   /* If the search isn't to be a backwards one, don't waste time in a
      search for a pattern that must be anchored.  */
-  if (bufp->used > 0 && (re_opcode_t) bufp->buffer[0] == begbuf && range > 0)
+  if (bufp->used > 0 && range > 0
+      && ((re_opcode_t) bufp->buffer[0] == begbuf
+         /* `begline' is like `begbuf' if it cannot match at newlines.  */
+         || ((re_opcode_t) bufp->buffer[0] == begline
+             && !bufp->newline_anchor)))
     {
       if (startpos > 0)
        return -1;
@@ -5737,7 +5741,7 @@ weak_alias (__regexec, regexec)
    from either regcomp or regexec.   We don't use PREG here.  */
 
 size_t
-__regerror (errcode, preg, errbuf, errbuf_size)
+regerror (errcode, preg, errbuf, errbuf_size)
     int errcode;
     const regex_t *preg;
     char *errbuf;