Skip to content

Commit f691685

Browse files
committed
Do not calculate destination length each time
1 parent d31148b commit f691685

4 files changed

Lines changed: 8 additions & 4 deletions

File tree

src/PIL/BmpImagePlugin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,8 @@ def decode(self, buffer):
291291
rle4 = self.args[1]
292292
data = bytearray()
293293
x = 0
294-
while len(data) < self.state.xsize * self.state.ysize:
294+
dest_length = self.state.xsize * self.state.ysize
295+
while len(data) < dest_length:
295296
pixels = self.fd.read(1)
296297
byte = self.fd.read(1)
297298
if not pixels or not byte:

src/PIL/DdsImagePlugin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,8 @@ def decode(self, buffer):
497497

498498
data = bytearray()
499499
bytecount = bitcount // 8
500-
while len(data) < self.state.xsize * self.state.ysize * len(masks):
500+
dest_length = self.state.xsize * self.state.ysize * len(masks)
501+
while len(data) < dest_length:
501502
value = int.from_bytes(self.fd.read(bytecount), "little")
502503
for i, mask in enumerate(masks):
503504
masked_value = value & mask

src/PIL/PpmImagePlugin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,8 @@ def decode(self, buffer: bytes) -> tuple[int, int]:
307307
out_byte_count = 4 if self.mode == "I" else 1
308308
out_max = 65535 if self.mode == "I" else 255
309309
bands = Image.getmodebands(self.mode)
310-
while len(data) < self.state.xsize * self.state.ysize * bands * out_byte_count:
310+
dest_length = self.state.xsize * self.state.ysize * bands * out_byte_count
311+
while len(data) < dest_length:
311312
pixels = self.fd.read(in_byte_count * bands)
312313
if len(pixels) < in_byte_count * bands:
313314
# eof

src/PIL/QoiImagePlugin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ def decode(self, buffer):
5353

5454
data = bytearray()
5555
bands = Image.getmodebands(self.mode)
56-
while len(data) < self.state.xsize * self.state.ysize * bands:
56+
dest_length = self.state.xsize * self.state.ysize * bands
57+
while len(data) < dest_length:
5758
byte = self.fd.read(1)[0]
5859
if byte == 0b11111110: # QOI_OP_RGB
5960
value = self.fd.read(3) + self._previous_pixel[3:]

0 commit comments

Comments
 (0)