小编cod*_*rer的帖子

libpng 在 png_write_into 上崩溃(Windows 10,VS2013,自建,所有测试通过)

我在调用 png_write_info 时观察到由于 libpng (1.6.20) 中的访问冲突导致的崩溃。我已经从源代码(包括 zlib 1.2.8)构建了 libpng,并且 libpng 源代码附带的 png 测试全部通过,没有任何错误。我可以确认在这些测试期间正在创建好的 png 文件。

我的程序的简单分解(直到它崩溃)看起来像这样。为简单起见,我删除了所有错误和边界检查:

int main(int argc, char *argv[]) {
    char* filename = argv[1];
    png_structp png = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
    png_infop info = png_create_info_struct(png);
    if (setjmp(png_jmpbuf(png)))
    {
        abort();
    }

    // Output is 16-bit depth, greyscale format.
    png_set_IHDR(
        png,
        info,
        127, 127,
        16,
        PNG_COLOR_TYPE_GRAY,
        PNG_INTERLACE_NONE,
        PNG_COMPRESSION_TYPE_DEFAULT,
        PNG_FILTER_TYPE_DEFAULT
    );

    // do the file stuff
    FILE *fp;
    errno_t error = fopen_s(&fp, filename, "wb");
    png_init_io(png, fp);
    png_write_info(png, info); // <-- crashes …
Run Code Online (Sandbox Code Playgroud)

c++ windows visual-c++ libpng visual-studio-2013

5
推荐指数
1
解决办法
689
查看次数

标签 统计

c++ ×1

libpng ×1

visual-c++ ×1

visual-studio-2013 ×1

windows ×1