Check number of bytes remaining before reading texture strings
This commit is contained in:
parent
613cb20678
commit
f451be4d18
|
@ -138,6 +138,9 @@ class Reader:
|
||||||
def how_much_left(self, pos):
|
def how_much_left(self, pos):
|
||||||
return self.end_pos - pos
|
return self.end_pos - pos
|
||||||
|
|
||||||
|
def bytes_remaining(self):
|
||||||
|
return self.end_pos - self.file.tell()
|
||||||
|
|
||||||
def skip_until(self, header):
|
def skip_until(self, header):
|
||||||
while (self.could_have_child() and header not in self.peak_next_header()):
|
while (self.could_have_child() and header not in self.peak_next_header()):
|
||||||
self.skip_bytes(1)
|
self.skip_bytes(1)
|
||||||
|
|
|
@ -165,19 +165,23 @@ def _read_matd(matd: Reader) -> Material:
|
||||||
|
|
||||||
elif next_header == "TX0D":
|
elif next_header == "TX0D":
|
||||||
with matd.read_child() as tx0d:
|
with matd.read_child() as tx0d:
|
||||||
mat.texture0 = tx0d.read_string()
|
if tx0d.bytes_remaining() > 0:
|
||||||
|
mat.texture0 = tx0d.read_string()
|
||||||
|
|
||||||
elif next_header == "TX1D":
|
elif next_header == "TX1D":
|
||||||
with matd.read_child() as tx1d:
|
with matd.read_child() as tx1d:
|
||||||
mat.texture1 = tx1d.read_string()
|
if tx1d.bytes_remaining() > 0:
|
||||||
|
mat.texture1 = tx1d.read_string()
|
||||||
|
|
||||||
elif next_header == "TX2D":
|
elif next_header == "TX2D":
|
||||||
with matd.read_child() as tx2d:
|
with matd.read_child() as tx2d:
|
||||||
mat.texture2 = tx2d.read_string()
|
if tx2d.bytes_remaining() > 0:
|
||||||
|
mat.texture2 = tx2d.read_string()
|
||||||
|
|
||||||
elif next_header == "TX3D":
|
elif next_header == "TX3D":
|
||||||
with matd.read_child() as tx3d:
|
with matd.read_child() as tx3d:
|
||||||
mat.texture3 = tx3d.read_string()
|
if tx3d.bytes_remaining() > 0:
|
||||||
|
mat.texture3 = tx3d.read_string()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
matd.skip_bytes(1)
|
matd.skip_bytes(1)
|
||||||
|
|
Loading…
Reference in New Issue