diff --git a/stb_image.h b/stb_image.h index ba9e065..318ea94 100644 --- a/stb_image.h +++ b/stb_image.h @@ -2210,8 +2210,12 @@ static int stbi__parse_huffman_block(stbi__zbuf *a) zout = a->zout; } p = (stbi_uc *) (zout - dist); - while (len--) - *zout++ = *p++; + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + do *zout++ = v; while (--len); + } else { + do *zout++ = *p++; while (--len); + } } } }