René Scharfe  committed ec83061

grep: stop leaking line strings with -f

When reading patterns from a file, we pass the lines as allocated string
buffers to append_grep_pat() and never free them. That's not a problem
because they are needed until the program ends anyway.

However, now that the function duplicates the pattern string, we can
reuse the strbuf after calling that function. This simplifies the code
a bit and plugs a minor memory leak.

Signed-off-by: Rene Scharfe <>
Signed-off-by: Junio C Hamano <>

  • Participants
  • Parent commits 526a858
  • Branches master

Comments (0)

Files changed (1)

File builtin/grep.c

 	if (!patterns)
 		die_errno(_("cannot open '%s'"), arg);
 	while (strbuf_getline(&sb, patterns, '\n') == 0) {
-		char *s;
-		size_t len;
 		/* ignore empty line like grep does */
 		if (sb.len == 0)
-		s = strbuf_detach(&sb, &len);
-		append_grep_pat(grep_opt, s, len, arg, ++lno, GREP_PATTERN);
+		append_grep_pat(grep_opt, sb.buf, sb.len, arg, ++lno,
 	if (!from_stdin)