(C ++)解压缩0字节的文件时出错ZR_FLATE。解压源:“Zip Utils -clean,Elegant ....”

时间:2011-09-16 13:51:47

标签: c++ zip unzip

我从这个来源使用unzip.h和.cpp: http://www.codeproject.com/KB/files/zip_utils.aspx

正如标题所说 - 当我解压缩0字节的文件时,我得到了ZR_FALTE。我一直在搜索这个错误,但没有找到任何答案。我还在作者codeproject post上发布了一个关于codeproject的问题,但之前没有回答同样的问题。

我的问题是,如果有人之前使用过该来源并且知道如何修复它。或者在其他条件下可能发生错误。

我缩小错误并忽略它的当前方式是:

ZENTRY zEntry;
ZRESULT zRes;

// uncompress...

if (zRes == ZR_FLATE && zEntry.comp_size == 0 && zEntry.unc_size == 0)
{
   // No error
}

源中错误的定义是: “de /通胀代码中的内部错误”

由于

1 个答案:

答案 0 :(得分:1)

这是函数中的错误:unzReadCurrentFile(...)。您可以通过添加以下行来修复它(在unzip.cpp行:3486中):

if(pfile_in_zip_read_info->rest_read_uncompressed==0)
{
    if (reached_eof!=0) *reached_eof=true;
    return UNZ_EOF;
};

正如您所看到的,对于零大小的文件,EOF检测被破坏,我想这是因为缓冲区大小检查,后来添加了。