Exception when appending a directory to existing archive
erdalkaraca opened this issue · comments
When opening an archive to append a directory (recursively) an exception is raised:
Traceback (most recent call last):
[...]
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\py7zr\py7zr.py", line 410, in __exit__
self.close()
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\py7zr\py7zr.py", line 1077, in close
self._write_flush()
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\py7zr\py7zr.py", line 685, in _write_flush
self._write_header()
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\py7zr\py7zr.py", line 693, in _write_header
encrypted=self.header_encryption,
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\py7zr\archiveinfo.py", line 1004, in write
startpos, headercrc = self._encode_header(file, afterheader, filters)
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\py7zr\archiveinfo.py", line 971, in _encode_header
_, raw_header_len, raw_crc = self.write(buf, 0, False)
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\py7zr\archiveinfo.py", line 1009, in write
self.main_streams.write(crcfile)
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\py7zr\archiveinfo.py", line 664, in write
self.substreamsinfo.write(file)
File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\py7zr\archiveinfo.py", line 616, in write
write_uint64(file, self.unpacksizes[idx])
IndexError: list index out of range
I am not sure, but a fix seems to be the following modification in archiveinfo.py:
Fix: indent the idx += 1 into the if clause.
If this fix sounds reasonable, I can create a PR.
A pull-request is always welcome. It is great if you add a test case for regression test.