From 754f01c4be9fff22d32351a29e4bcdd5b1d24cf5 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Mon, 4 Oct 2021 20:24:06 +0000 Subject: In man(1) mode, properly clean up the resn[] result array after processing each name given on the command line. Failure to do so resulted in a memory leak of about 50 kilobytes per name given on the command line. Since man(1) uses a few Megabytes of memory anyway and people rarely give hundreds of names on the command line, this leak did not cause practical problems, but cleaning up properly is better in any case. --- main.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index c5a7cff9..c23a1a7f 100644 --- a/main.c +++ b/main.c @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.358 2021/09/04 22:38:46 schwarze Exp $ */ +/* $Id: main.c,v 1.359 2021/10/04 20:24:06 schwarze Exp $ */ /* * Copyright (c) 2010-2012, 2014-2021 Ingo Schwarze * Copyright (c) 2008-2012 Kristaps Dzonsons @@ -516,6 +516,9 @@ main(int argc, char *argv[]) memcpy(res + ressz, resn, sizeof(*resn) * resnsz); ressz += resnsz; + free(resn); + resn = NULL; + resnsz = 0; continue; } @@ -554,6 +557,10 @@ main(int argc, char *argv[]) res = mandoc_reallocarray(res, ressz + 1, sizeof(*res)); memcpy(res + ressz++, resn + ib, sizeof(*resn)); + memset(resn + ib, 0, sizeof(*resn)); + mansearch_free(resn, resnsz); + resn = NULL; + resnsz = 0; } /* apropos(1), whatis(1): Process the full search expression. */ -- cgit v1.2.3-56-ge451