X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=regex.c;h=76000894044ee4d4ce328fb9b9b149d66d6e7705;hb=140b7a20b7c376347dac834c95baee91af125394;hp=a6c186c5c13cc5833162a1c34a1692db06c84212;hpb=213afad199577109f44b050b0b90d6e6ea9a262c;p=gnulib.git diff --git a/regex.c b/regex.c index a6c186c5c..760008940 100644 --- a/regex.c +++ b/regex.c @@ -3710,13 +3710,13 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop) range = total_size - startpos; /* If the search isn't to be a backwards one, don't waste time in a - search for a pattern that must be anchored. */ + search for a pattern anchored at beginning of buffer. */ if (bufp->used > 0 && (re_opcode_t) bufp->buffer[0] == begbuf && range > 0) { if (startpos > 0) return -1; else - range = 1; + range = 0; } #ifdef emacs @@ -3724,8 +3724,8 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop) don't keep searching past point. */ if (bufp->used > 0 && (re_opcode_t) bufp->buffer[0] == at_dot && range > 0) { - range = PT - startpos; - if (range <= 0) + range = PT_BYTE - BEGV_BYTE - startpos; + if (range < 0) return -1; } #endif /* emacs */