From 099811eda0b0ab8997acb41d20dde090863bacf4 Mon Sep 17 00:00:00 2001 From: Anton Gorev Date: Wed, 10 Aug 2016 14:40:55 -0500 Subject: [PATCH] Fixed core dump in HuffmanEncoder::GenerateCodeLengths in case of only one leaf in tree. --- zdeflate.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/zdeflate.cpp b/zdeflate.cpp index a016b300..22b2d507 100644 --- a/zdeflate.cpp +++ b/zdeflate.cpp @@ -126,6 +126,15 @@ void HuffmanEncoder::GenerateCodeLengths(unsigned int *codeBits, unsigned int ma std::fill(codeBits, codeBits+nCodes, 0); return; } + + if (1 == nCodes - treeBegin) + { + // special case when only one leaf in tree + fill(codeBits, codeBits + nCodes, 0); + codeBits[tree[treeBegin].symbol] = 1; + return; + } + tree.resize(nCodes + nCodes - treeBegin - 1); size_t leastLeaf = treeBegin, leastInterior = nCodes;