libpng icon indicating copy to clipboard operation
libpng copied to clipboard

zstream not in use when calling png_write_png second time

Open MartinPerry opened this issue 5 years ago • 2 comments

I have this code:


std::vector<uint8_t> out;
out.reserve(w * h * 4);
png_set_write_fn(png_ptr, &out, PngWriteCallback, NULL);

png_set_compression_strategy(png_ptr, Z_HUFFMAN_ONLY);
png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);

std::vector<uint8_t> out1 = std::move(out);
out.clear();
out.reserve(w * h * 4);

png_set_compression_strategy(png_ptr, Z_FILTERED);
png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);

However, when I call png_write_png second time, program crashes with:

libpng warning: zstream not in use (internal error)
libpng error: stream error

This happens on Linux with libpng15, on Windows 10 all is working correctly.

MartinPerry avatar Jun 22 '19 16:06 MartinPerry