[5/5] diff --color-moved: fix a memory leak
diff mbox series

Message ID 20181002175514.31495-5-phillip.wood@talktalk.net
State New
Headers show
Series
  • [1/5] diff --color-moved-ws: fix double free crash
Related show

Commit Message

Phillip Wood Oct. 2, 2018, 5:55 p.m. UTC
From: Phillip Wood <phillip.wood@dunelm.org.uk>

Free the hashmap items as well as the hashmap itself. This was found
with asan.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
 diff.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Stefan Beller Oct. 2, 2018, 7:11 p.m. UTC | #1
On Tue, Oct 2, 2018 at 10:55 AM Phillip Wood <phillip.wood@talktalk.net> wrote:
>
> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>
> Free the hashmap items as well as the hashmap itself. This was found
> with asan.
>
> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> ---
>  diff.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/diff.c b/diff.c
> index 4464feacf8..94cc1b5592 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -5770,8 +5770,8 @@ static void diff_flush_patch_all_file_pairs(struct diff_options *o)
>                         if (o->color_moved == COLOR_MOVED_ZEBRA_DIM)
>                                 dim_moved_lines(o);
>
> -                       hashmap_free(&add_lines, 0);
> -                       hashmap_free(&del_lines, 0);
> +                       hashmap_free(&add_lines, 1);
> +                       hashmap_free(&del_lines, 1);

And this is sufficient as the entries themselves are
moved_entry, which only contain pointers (to
o->emitted_symbols), which are freed later.
There is nothing in there that needs extra free-ing.

Thanks,
Stefan

Patch
diff mbox series

diff --git a/diff.c b/diff.c
index 4464feacf8..94cc1b5592 100644
--- a/diff.c
+++ b/diff.c
@@ -5770,8 +5770,8 @@  static void diff_flush_patch_all_file_pairs(struct diff_options *o)
 			if (o->color_moved == COLOR_MOVED_ZEBRA_DIM)
 				dim_moved_lines(o);
 
-			hashmap_free(&add_lines, 0);
-			hashmap_free(&del_lines, 0);
+			hashmap_free(&add_lines, 1);
+			hashmap_free(&del_lines, 1);
 		}
 
 		for (i = 0; i < esm.nr; i++)