From 0bceffb6eca66fe405c59f5c58c6ef2ff1be4add Mon Sep 17 00:00:00 2001 From: Lode Date: Sun, 19 Apr 2015 19:15:05 +0200 Subject: small optimization --- lodepng.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lodepng.cpp b/lodepng.cpp index e911c40..326b952 100644 --- a/lodepng.cpp +++ b/lodepng.cpp @@ -1168,12 +1168,14 @@ static unsigned inflateHuffmanBlock(ucvector* out, const unsigned char* in, size backward = start - distance; if(!ucvector_resize(out, (*pos) + length)) ERROR_BREAK(83 /*alloc fail*/); - for(forward = 0; forward < length; ++forward) - { - out->data[(*pos)] = out->data[backward]; - ++(*pos); - ++backward; - if(backward >= start) backward = start - distance; + if (distance < length) { + for(forward = 0; forward < length; ++forward) + { + out->data[(*pos)++] = out->data[backward++]; + } + } else { + memcpy(out->data + *pos, out->data + backward, length); + *pos += length; } } else if(code_ll == 256) -- cgit v1.2.3