0
我做下面解壓縮壓縮數據塊:的Android NDK的zlib返回Z_DATA_ERROR爲有效的壓縮信息
z_stream stream;
int err;
int nExtraChunks;
uInt destlen;
stream.next_in = (Bytef*)pSrc;
stream.avail_in = (uInt)nSrcLen;
destlen = (uInt)*pnDestLen;
stream.zalloc = Z_NULL;
stream.zfree = Z_NULL;
stream.opaque = Z_NULL;
err = inflateInit(&stream);
if (err != Z_OK)
return err;
nExtraChunks = 0;
do {
stream.next_out = pDest;
stream.avail_out = destlen;
err = inflate(&stream, Z_FINISH);
if (err == Z_STREAM_END)
break;
if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))
{
err = Z_DATA_ERROR;
}
if (err != Z_BUF_ERROR)
{
inflateEnd(&stream);
return err;
}
nExtraChunks += 1;
} while (stream.avail_out == 0);
*pnDestLen = stream.total_out;
err = inflateEnd(&stream);
if (err != Z_OK) return err;
return nExtraChunks ? Z_BUF_ERROR : Z_OK;
其中PSRC和nSrcLen,pDest和destLen給出的內存塊,它們各自的長度。 pSrc保存有效的zip文件的內容。
(此例程從easyzlib驅動功能適於但我直接使用NDK提供的ZLIB。)
第一充氣調用返回-3(Z_DATA_ERROR)爲每一個呼叫我作出。我已經確認,通過將內存塊寫入磁盤,並通過「adb pull」將其下載到我的mac並對其進行槍劈,zip文件是有效的。我不太瞭解zlib ......我能做些什麼來調試呢?