diff options
| author | Jeff King <peff@peff.net> | 2024-06-04 06:13:25 -0400 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-06-05 09:51:42 -0700 |
| commit | c3324649ed5af972c9e91740b46a6e2a063050d4 (patch) | |
| tree | 65814ae833e9738054bf45f21aa993ab4da54199 | |
| parent | eed1fbe73b46e5c7f87d724f97fba6d8a4391fc9 (diff) | |
| download | git-c3324649ed5af972c9e91740b46a6e2a063050d4.tar.gz | |
sparse-checkout: reuse --stdin buffer when reading patterns
When we read patterns from --stdin, we loop on strbuf_getline(), and
detach each line we read to pass into add_pattern(). This used to be
necessary because add_pattern() required that the pattern strings remain
valid while the pattern_list was in use. But it also created a leak,
since we didn't record the detached buffers anywhere else.
Now that add_pattern() has been modified to make its own copy of the
strings, we can stop detaching and fix the leak. This fixes 4 leaks
detected in t1091.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
| -rw-r--r-- | builtin/sparse-checkout.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c index 923e6ecc0a..75c07d5bb4 100644 --- a/builtin/sparse-checkout.c +++ b/builtin/sparse-checkout.c @@ -585,11 +585,10 @@ static void add_patterns_from_input(struct pattern_list *pl, if (file) { struct strbuf line = STRBUF_INIT; - while (!strbuf_getline(&line, file)) { - size_t len; - char *buf = strbuf_detach(&line, &len); - add_pattern(buf, empty_base, 0, pl, 0); - } + while (!strbuf_getline(&line, file)) + add_pattern(line.buf, empty_base, 0, pl, 0); + + strbuf_release(&line); } else { for (i = 0; i < argc; i++) add_pattern(argv[i], empty_base, 0, pl, 0); |
