Skip to content

Commit 891c996

Browse files
avargitster
authored andcommitted
grep.c: refactor free_grep_patterns()
Refactor the free_grep_patterns() function to split out the freeing of the "struct grep_pat" it contains. Right now we're only freeing the "pattern_list", but we should be freeing another member of the same type, which we'll do in the subsequent commit. Let's also replace the "return" if we don't have an "opt->pattern_expression" with a conditional call of free_pattern_expr(). Before db84376 (grep.c: remove "extended" in favor of "pattern_expression", fix segfault, 2022-10-11) the pattern here was: if (!x) return; free_pattern_expr(y); While at it, instead of: if (!x) return; free_pattern_expr(x); Let's instead do: if (x) free_pattern_expr(x); This will make it easier to free additional members from free_grep_patterns() in the future. Helped-by: Elijah Newren <[email protected]> Signed-off-by: Ævar Arnfjörð Bjarmason <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 41211db commit 891c996

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

grep.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -769,11 +769,11 @@ static void free_pattern_expr(struct grep_expr *x)
769769
free(x);
770770
}
771771

772-
void free_grep_patterns(struct grep_opt *opt)
772+
static void free_grep_pat(struct grep_pat *pattern)
773773
{
774774
struct grep_pat *p, *n;
775775

776-
for (p = opt->pattern_list; p; p = n) {
776+
for (p = pattern; p; p = n) {
777777
n = p->next;
778778
switch (p->token) {
779779
case GREP_PATTERN: /* atom */
@@ -790,10 +790,14 @@ void free_grep_patterns(struct grep_opt *opt)
790790
}
791791
free(p);
792792
}
793+
}
793794

794-
if (!opt->pattern_expression)
795-
return;
796-
free_pattern_expr(opt->pattern_expression);
795+
void free_grep_patterns(struct grep_opt *opt)
796+
{
797+
free_grep_pat(opt->pattern_list);
798+
799+
if (opt->pattern_expression)
800+
free_pattern_expr(opt->pattern_expression);
797801
}
798802

799803
static const char *end_of_line(const char *cp, unsigned long *left)

0 commit comments

Comments
 (0)