From: Junio C Hamano Date: Sun, 29 Jun 2008 03:36:46 GMT Subject: Re: [PATCH] git cat-file: Fix memory leak in batch mode Message-ID: <7v1w2gkj3l.fsf@gitster.siamese.dyndns.org> In-Reply-To: <20080629012125.GA1722@atjola.homenet> Björn Steinbrink writes: > When run in batch mode, git cat-file never frees the memory for the blob > contents it is printing. This quickly adds up and causes git-svn to be > hardly usable for imports of large svn repos, because it uses cat-file in > batch mode and cat-file's memory usage easily reaches several hundred MB > without any good reason. > > Signed-off-by: Björn Steinbrink > --- > builtin-cat-file.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/builtin-cat-file.c b/builtin-cat-file.c > index bd343ef..f966dcb 100644 > --- a/builtin-cat-file.c > +++ b/builtin-cat-file.c > @@ -183,6 +183,7 @@ static int batch_one_object(const char *obj_name, int print_contents) > fflush(stdout); > } > > + free(contents); > return 0; > } Thanks, except that it should go inside the "if (print_contents == BATCH)" block to avoid freeing an uninitialized pointer.