From 0e4e5e4e5e3bd26e637571f7c939715e276700c7 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 26 Feb 2012 23:09:05 -0800 Subject: [PATCH] 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 . * 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. --- ChangeLog | 11 +++++++++++ lib/regexec.c | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index ed9c384c1b..433609aab7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2012-02-26 Paul Eggert + + 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 + . + * 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 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. */ -- 2.39.5