From: Paul Eggert <eggert@cs.ucla.edu> Date: Mon, 27 Feb 2012 07:09:05 +0000 (-0800) Subject: regex: re_search etc. should return -2 when memory exhausted X-Git-Tag: v0.1~1054 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=0e4e5e4e5e3bd26e637571f7c939715e276700c7;p=gnulib.git regex: re_search etc. should return -2 when memory exhausted This bug was uncovered when testing 'grep'. Without the fix, re_search and friends return -1 when memory is exhausted, but -1 means no match, and this causes grep to falsely report no-match instead of memory-exhaustion. See <http://sources.redhat.com/bugzilla/show_bug.cgi?id=13762>. * lib/regexec.c (re_search_stub): Return -2 (not -1) if there is trouble; this can occur if re_search_internal ran out of memory. --- diff --git a/ChangeLog b/ChangeLog index ed9c384c1b..433609aab7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2012-02-26 Paul Eggert <eggert@cs.ucla.edu> + + regex: re_search etc. should return -2 when memory exhausted + This bug was uncovered when testing 'grep'. Without the fix, + re_search and friends return -1 when memory is exhausted, but -1 + means no match, and this causes grep to falsely report no-match + instead of memory-exhaustion. See + <http://sources.redhat.com/bugzilla/show_bug.cgi?id=13762>. + * lib/regexec.c (re_search_stub): Return -2 (not -1) if there is + trouble; this can occur if re_search_internal ran out of memory. + 2012-02-26 Bruno Haible <bruno@clisp.org> modfl-ieee: Work around test failures on IRIX, OSF/1, mingw. diff --git a/lib/regexec.c b/lib/regexec.c index 660d25b581..5cbfa91270 100644 --- a/lib/regexec.c +++ b/lib/regexec.c @@ -475,7 +475,7 @@ re_search_stub (struct re_pattern_buffer *bufp, /* I hope we needn't fill ther regs with -1's when no match was found. */ if (result != REG_NOERROR) - rval = -1; + rval = result == REG_NOMATCH ? -1 : -2; else if (regs != NULL) { /* If caller wants register contents data back, copy them. */