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

Re: [patch] possible memory leak in diff.c::diff_free_filepair()

From
Yasushi SHOJI <yashi@atmark-techno.com>
Date
Aug 21, 2005, 07:14 UTC
Message-ID
<87irxzhid3.wl@mail2.atmark-techno.com>
In-Reply-To
<7v3bpapkmr.fsf@assigned-by-dhcp.cox.net>

At Mon, 15 Aug 2005 21:32:12 -0700, Junio C Hamano wrote:

Show 14 quoted lines
> 
> Yasushi SHOJI <yashi@atmark-techno.com> writes:
> 
> > parepare_temp_file() and diff_populate_filespec() has a lot in
> > similarity. so it'd be nice to refactor some. and re-introduce
> > diff_free_filespec_data() and call right after prep_temp_blob() in
> > prepare_temp_file().
> 
> Another thing that may (or may not) help would be to move that
> prepare_temp_file() and stuff to happen in the forked child
> process instead of the parent, so that we do not have to worry
> about freeing the buffer; it has been some time since I worked
> on that part of the code so this may not be an option to make
> things easier.

well, I couldn't figure out how to do it in child. because the parent need to know temp files in order to delete after child used it.

anyway, here is a patch to fix the problem in the simplest way.
regards,
--
          yashi

----------- Make diff_flush a bit more system friendly.

This seems to be the simplest way to fix the peak time high memory usage in diff_flush. Don't wait all iteration to free each filepair.

Signed-off-by: Yasushi SHOJI <yashi@atmark-techno.com>
---
 diff.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)
e0f7f97ddc29a9172c2f6c1221eca936aa80835c
diff --git a/diff.c b/diff.c
--- a/diff.c
+++ b/diff.c
@@ -1010,9 +1010,8 @@ void diff_flush(int diff_output_style, i
 			diff_flush_name(p, line_termination);
 			break;
 		}
-	}
-	for (i = 0; i < q->nr; i++)
 		diff_free_filepair(q->queue[i]);
+	}
 	free(q->queue);
 	q->queue = NULL;
 	q->nr = q->alloc = 0;
Previous: Junio C Hamano
Message 7 of 7 in “possible memory leak in diff.c::diff_free_filepair()”
  1. possible memory leak in diff.c::diff_free_filepair()Yasushi SHOJI, Aug 13, 2005
  2. Junio C HamanoAug 13, 2005
  3. Yasushi SHOJIAug 13, 2005
  4. Junio C HamanoAug 13, 2005
  5. Yasushi SHOJIAug 16, 2005
  6. Junio C HamanoAug 16, 2005
  7. Yasushi SHOJIAug 21, 2005

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.