AbstractFSProvider::status_t ZIPProvider::readFile(const FileName & url, std::vector<uint8_t> & data) { std::lock_guard<std::mutex> lock(handlesMutex); std::string archiveFileName; FileName file; decomposeURL(url, archiveFileName, file); ZIPHandle * handle = getZIPHandle(archiveFileName); if (handle == nullptr) { return FAILURE; } // Make sure all data has been written. if (handle->isChanged()) { delete handle; openHandles.erase(archiveFileName); handle = getZIPHandle(archiveFileName); } return handle->readFile(file, data); }