From 14115f84a38161d55eaa2d070f08739bde37e966 Mon Sep 17 00:00:00 2001
From: Lasse Collin <lasse.collin@tukaani.org>
Date: Wed, 4 Nov 2015 23:14:00 +0200
Subject: liblzma: Make Valgrind happier with optimized (gcc -O2) liblzma.

When optimizing, GCC can reorder code so that an uninitialized
value gets used in a comparison, which makes Valgrind unhappy.
It doesn't happen when compiled with -O0, which I tend to use
when running Valgrind.

Thanks to Rich Prohaska. I remember this being mentioned long
ago by someone else but nothing was done back then.
---
 src/liblzma/lz/lz_encoder.c | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'src/liblzma/lz')

diff --git a/src/liblzma/lz/lz_encoder.c b/src/liblzma/lz/lz_encoder.c
index 48bc487d..5a2be798 100644
--- a/src/liblzma/lz/lz_encoder.c
+++ b/src/liblzma/lz/lz_encoder.c
@@ -541,7 +541,11 @@ lzma_lz_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
 		next->coder->lz.code = NULL;
 		next->coder->lz.end = NULL;
 
+		// mf.size is initialized to silence Valgrind
+		// when used on optimized binaries (GCC may reorder
+		// code in a way that Valgrind gets unhappy).
 		next->coder->mf.buffer = NULL;
+		next->coder->mf.size = 0;
 		next->coder->mf.hash = NULL;
 		next->coder->mf.son = NULL;
 		next->coder->mf.hash_count = 0;
-- 
cgit v1.2.3