1024jp / GzipSwift

Swift package that enables gzip/gunzip Data using zlib
MIT License
544 stars 134 forks source link

gunzippedData returns nil for large NSData #4

Closed sriramkay closed 7 months ago

sriramkay commented 9 years ago

I tried using this code to uncompress(gunzip) gzipped NSData in swift. Gunzip works fine when the gzipped NSData is smaller in size (eg. 653 bytes), however fails (returns nil) for larger NSData (eg. 9491 bytes).

Could you please let me know the fix for this?

oekekezie commented 9 years ago

I'm not sure how helpful this will be but have you tried checking the result of the call to "deflateInit2_" function in the "gzippedData" function?

Perhaps it is returning something other than "Z_OK" and thus returning "nil." For example, maybe you're actually getting an "Insufficient memory available" error: http://refspecs.linuxbase.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/zlib-deflateinit2.html.

Just from looking at the source code, it's either that or you're not actually loading any data and so "self.length" is 0 in the "gzippedData" function.

sriramkay commented 9 years ago

Yes. It is not returning the status as "Z_OK", instead "Z_DATA_ERROR" only for larger NSData. Is there a way, we could identify the data error description?

1024jp commented 9 years ago

Hi, I've just improved the extension:

I hope it is some kind helpful to identify your problem. (And sorry, I couldn't reproduce your matter. Under my environment, even larger file, for example 18 KB, can be compressed/decompressed)

Just printing error message is of course not a good solution. However I have a plan to integrate the throw error handling on Swift 2.0. So, I don't wanna make change at the moment.

sriramkay commented 9 years ago

Hi, Thanks for the error message addition. The error message says "Decompression failed: incorrect data check". Does it mean for checksum integrity?

Additional notes:

  1. The input NSData contains the gzipped image data.
  2. Input data starts with 1f8b (magic number of gzip data).
  3. The gzip was done on Android code and we are trying to gunzip in iOS Swift.
  4. Larger data zipped from iOS does not have any problem while gunzip.

Let me know if you have any suggestions on this.

Thanks.

1024jp commented 7 months ago

This issue was closed because it has been inactive for years since the last update.