git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v5 05/19] grep: remove redundant `regflags &= ~REG_EXTENDED` assignments

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Apr 26, 2017, 07:48 UTC
Message-ID
<20170426074856.29903-1-avarab@gmail.com>
In-Reply-To
<xmqqvaprrb37.fsf@gitster.mtv.corp.google.com>

Remove redundant assignments to the "regflags" variable. There are no code paths that have previously set the regflags to anything, and certainly not to `|= REG_EXTENDED`.

This code gave the impression that it had to reset its environment, but it doesn't. This dates back to the initial introduction of git-grep in commit 5010cb5fcc ("built-in "git grep"", 2006-04-30).

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
On Wed, Apr 26, 2017 at 7:29 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 14 quoted lines
> Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:
>
>> @@ -417,7 +415,6 @@ static void compile_fixed_regexp(struct grep_pat *p, struct grep_opt *opt)
>>       int regflags;
>>
>>       basic_regex_quote_buf(&sb, p->pattern);
>> -     regflags = opt->regflags & ~REG_EXTENDED;
>>       if (opt->ignore_case)
>>               regflags |= REG_ICASE;
>>       err = regcomp(&p->regexp, sb.buf, regflags);
>
> This hunk is wrong.  Now the use of regflags we see in the post
> context is mixing ICASE bit into an uninitialized garbage on the
> stack.

Oops, sorry about that. Here's a fixed version. Just sending a v5 for this, not the entire rest of the series. If you'd like to grab it in .git form it's github.com/avar/git:avar/pcre2-5, this is the only change from v4.

 grep.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/grep.c b/grep.c
index 59ae7809f2..bf6c2494fd 100644
--- a/grep.c
+++ b/grep.c
@@ -179,7 +179,6 @@ static void grep_set_pattern_type_option(enum grep_pattern_type pattern_type, st
 	case GREP_PATTERN_TYPE_BRE:
 		opt->fixed = 0;
 		opt->pcre = 0;
-		opt->regflags &= ~REG_EXTENDED;
 		break;
 
 	case GREP_PATTERN_TYPE_ERE:
@@ -191,7 +190,6 @@ static void grep_set_pattern_type_option(enum grep_pattern_type pattern_type, st
 	case GREP_PATTERN_TYPE_FIXED:
 		opt->fixed = 1;
 		opt->pcre = 0;
-		opt->regflags &= ~REG_EXTENDED;
 		break;
 
 	case GREP_PATTERN_TYPE_PCRE:
@@ -414,10 +412,9 @@ static void compile_fixed_regexp(struct grep_pat *p, struct grep_opt *opt)
 {
 	struct strbuf sb = STRBUF_INIT;
 	int err;
-	int regflags;
+	int regflags = opt->regflags;
 
 	basic_regex_quote_buf(&sb, p->pattern);
-	regflags = opt->regflags & ~REG_EXTENDED;
 	if (opt->ignore_case)
 		regflags |= REG_ICASE;
 	err = regcomp(&p->regexp, sb.buf, regflags);
-- 
2.11.0
Previous: Junio C HamanoNext: Junio C Hamano
Message 9 of 24 in “PCRE v1 improvements & PCRE v2 support”
  1. 00/19 PCRE v1 improvements & PCRE v2 supportÆvar Arnfjörð Bjarmason, Apr 25, 2017
  2. 01/19 grep: amend submodule recursion test in preparation for rx engine testingÆvar Arnfjörð Bjarmason, Apr 25, 2017
  3. 02/19 grep: add tests for grep pattern types being passed to submodulesÆvar Arnfjörð Bjarmason, Apr 25, 2017
  4. 03/19 grep: submodule-related case statements should die if new fields are addedÆvar Arnfjörð Bjarmason, Apr 25, 2017
  5. 04/19 grep: remove redundant regflags assignment under PCREÆvar Arnfjörð Bjarmason, Apr 25, 2017
  6. 05/19 grep: remove redundant `regflags &= ~REG_EXTENDED` assignmentsÆvar Arnfjörð Bjarmason, Apr 25, 2017
  7. Junio C HamanoApr 26, 2017
  8. Junio C HamanoApr 26, 2017
  9. 05/19 grep: remove redundant `regflags &= ~REG_EXTENDED` assignmentsÆvar Arnfjörð Bjarmason, Apr 26, 2017
  10. Junio C HamanoApr 27, 2017
  11. 06/19 Makefile & configure: reword outdated comment about PCREÆvar Arnfjörð Bjarmason, Apr 25, 2017
  12. 07/19 grep: add a test for backreferences in PCRE patternsÆvar Arnfjörð Bjarmason, Apr 25, 2017
  13. 09/19 log: add -P as a synonym for --perl-regexpÆvar Arnfjörð Bjarmason, Apr 25, 2017
  14. 08/19 log: add exhaustive tests for pattern style options & configÆvar Arnfjörð Bjarmason, Apr 25, 2017
  15. 10/19 grep & rev-list doc: stop promising libpcre for --perl-regexpÆvar Arnfjörð Bjarmason, Apr 25, 2017
  16. 12/19 test-lib: rename the LIBPCRE prerequisite to PCREÆvar Arnfjörð Bjarmason, Apr 25, 2017
  17. 13/19 grep: change the internal PCRE macro names to be PCRE1Ævar Arnfjörð Bjarmason, Apr 25, 2017
  18. 14/19 grep: change the internal PCRE code & header names to be PCRE1Ævar Arnfjörð Bjarmason, Apr 25, 2017
  19. 15/19 perf: add a performance comparison test of grep -E and -PÆvar Arnfjörð Bjarmason, Apr 25, 2017
  20. 11/19 grep: make grep.patternType=[pcre|pcre1] a synonym for "perl"Ævar Arnfjörð Bjarmason, Apr 25, 2017
  21. 16/19 grep: add support for the PCRE v1 JIT APIÆvar Arnfjörð Bjarmason, Apr 25, 2017
  22. 17/19 grep: add support for PCRE v2Ævar Arnfjörð Bjarmason, Apr 25, 2017
  23. 18/19 grep: remove support for concurrent use of both PCRE v1 & v2Ævar Arnfjörð Bjarmason, Apr 25, 2017
  24. 19/19 Makefile & configure: make PCRE v2 the default PCRE implementationÆvar Arnfjörð Bjarmason, Apr 25, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.