Just found that when you're trying to work with CL_ZipArchive loading it from memory (CL_IODeviceProvider_Memory), your program will crash on the first CL_ZipArchive::open_file function call. I've done some debugging and got this:
Other CL_IODeviceProvider derived classes (CL_IODeviceProvider_File for example) have a correct duplicate() method. CL_IODeviceProvider_PipeConnection throws an exception "not implemented" when using this method, and it's OK.
I think, that this can be fixed this way:
Please, apply this fix to SVN, if it's really a bug.
return new CL_IODeviceProvider_Memory(data);