construct.core.PaddingError: subcon parsed more bytes than was allowed by length
Closed this issue · 7 comments
I'm seeing the following error when parsing a match played today:
File "/home/jnyman/Ubuntu/scripts/aoe2/replay_plotter/aoe2_plot.py", line 205, in parse_match
container = mgz.body.operation.parse_stream(f)
File "/home/jnyman/.local/lib/python3.9/site-packages/construct/core.py", line 171, in parse_stream
return self._parse(stream, context2, "(parsing)")
File "/home/jnyman/.local/lib/python3.9/site-packages/construct/core.py", line 2784, in _parse
return self.subcon._parse(stream, context, path)
File "/home/jnyman/.local/lib/python3.9/site-packages/construct/core.py", line 867, in _parse
subobj = sc._parse(stream, context, path)
File "/home/jnyman/.local/lib/python3.9/site-packages/construct/core.py", line 295, in _parse
return self.subcon._parse(stream, context, path)
File "/home/jnyman/.local/lib/python3.9/site-packages/construct/core.py", line 2784, in _parse
return self.subcon._parse(stream, context, path)
File "/home/jnyman/.local/lib/python3.9/site-packages/construct/core.py", line 1594, in _parse
obj = self.cases.get(key, self.default)._parse(stream, context, path)
File "/home/jnyman/.local/lib/python3.9/site-packages/construct/core.py", line 2788, in _parse
raise e.__class__("%s\n %s" % (e, path))
construct.core.PaddingError: subcon parsed more bytes than was allowed by length
(parsing) -> operation -> data -> action
Can you post the match?
@nymanjens fixed in 5697661, thanks for the report and sorry it took so long to fix.
Thanks!
I had the same problem.
I'm getting the same error with the latest source code after the bug was fixed.
command
import os
from mgz import header, body
with open('C:/Users/yoshi/Games/Age of Empires 2 DE/76561199387650333/savegame/error.aoe2record', 'rb') as data:
eof = os.fstat(data.fileno()).st_size
header.parse_stream(data)
body.meta.parse_stream(data)
while data.tell() < eof:
body.operation.parse_stream(data)
Traceback (most recent call last):
File "C:\Users\yoshi\AppData\Local\Programs\Python\Python311\Lib\site-packages\construct-2.8.16-py3.11.egg\construct\core.py", line 2784, in _parse
File "C:\Users\yoshi\AppData\Local\Programs\Python\Python311\Lib\site-packages\construct-2.8.16-py3.11.egg\construct\core.py", line 867, in _parse
File "C:\Users\yoshi\AppData\Local\Programs\Python\Python311\Lib\site-packages\construct-2.8.16-py3.11.egg\construct\core.py", line 1234, in _parse
construct.core.PaddingError: subcon parsed more bytes than was allowed by length
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "", line 6, in
File "C:\Users\yoshi\AppData\Local\Programs\Python\Python311\Lib\site-packages\construct-2.8.16-py3.11.egg\construct\core.py", line 171, in parse_stream
File "C:\Users\yoshi\AppData\Local\Programs\Python\Python311\Lib\site-packages\construct-2.8.16-py3.11.egg\construct\core.py", line 2784, in _parse
File "C:\Users\yoshi\AppData\Local\Programs\Python\Python311\Lib\site-packages\construct-2.8.16-py3.11.egg\construct\core.py", line 867, in _parse
File "C:\Users\yoshi\AppData\Local\Programs\Python\Python311\Lib\site-packages\construct-2.8.16-py3.11.egg\construct\core.py", line 295, in _parse
File "C:\Users\yoshi\AppData\Local\Programs\Python\Python311\Lib\site-packages\construct-2.8.16-py3.11.egg\construct\core.py", line 2784, in _parse
File "C:\Users\yoshi\AppData\Local\Programs\Python\Python311\Lib\site-packages\construct-2.8.16-py3.11.egg\construct\core.py", line 1594, in _parse
File "C:\Users\yoshi\AppData\Local\Programs\Python\Python311\Lib\site-packages\construct-2.8.16-py3.11.egg\construct\core.py", line 2788, in _parse
construct.core.PaddingError: subcon parsed more bytes than was allowed by length
(parsing) -> operation -> data -> action