(C++)解压缩 0 字节的文件时ZR_FLATE错误。解压缩源:"Zip Utils -clean, elegant...."



我使用这个源代码中的unzip.h和.cpp:http://www.codeproject.com/KB/files/zip_utils.aspx

正如标题所说-当我解压缩0字节的文件时,我得到ZR_FALTE。我已经找遍了这个错误,但没有找到任何答案。我也为作者的codeproject帖子发布了一个关于codeproject的问题,但同样的问题以前也有人问过,没有答案。

我的问题是,如果有人以前使用过这个源,知道如何修复它。或者在其他可能发生错误的情况下。

目前我缩小错误并忽略它的方法是:

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

源中错误的定义为:" de/inflation代码中的内部错误"

谢谢

这是函数: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检测被破坏了,我猜这是因为缓冲区大小检查,这是后来添加的。

最新更新