From 3396ce102d0a2e8db663522001cab9786edf19c0 Mon Sep 17 00:00:00 2001 From: Nulano Date: Fri, 29 Dec 2023 23:18:08 +0100 Subject: [PATCH] do not accept int in PIL._binary.i8 --- src/PIL/IptcImagePlugin.py | 15 +++++++++------ src/PIL/_binary.py | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/PIL/IptcImagePlugin.py b/src/PIL/IptcImagePlugin.py index e7dc3e4e4d2..cc39441b6d5 100644 --- a/src/PIL/IptcImagePlugin.py +++ b/src/PIL/IptcImagePlugin.py @@ -20,26 +20,29 @@ import tempfile from . import Image, ImageFile -from ._binary import i8, o8 from ._binary import i16be as i16 from ._binary import i32be as i32 COMPRESSION = {1: "raw", 5: "jpeg"} -PAD = o8(0) * 4 +PAD = b"\0\0\0\0" # # Helpers +def _i8(c: int | bytes) -> int: + return c if isinstance(c, int) else c[0] + + def i(c): return i32((PAD + c)[-4:]) def dump(c): for i in c: - print("%02x" % i8(i), end=" ") + print("%02x" % _i8(i), end=" ") print() @@ -103,10 +106,10 @@ def _open(self): self.info[tag] = tagdata # mode - layers = i8(self.info[(3, 60)][0]) - component = i8(self.info[(3, 60)][1]) + layers = self.info[(3, 60)][0] + component = self.info[(3, 60)][1] if (3, 65) in self.info: - id = i8(self.info[(3, 65)][0]) - 1 + id = self.info[(3, 65)][0] - 1 else: id = 0 if layers == 1 and not component: diff --git a/src/PIL/_binary.py b/src/PIL/_binary.py index b8b871df678..0a07e8d0e12 100644 --- a/src/PIL/_binary.py +++ b/src/PIL/_binary.py @@ -18,8 +18,8 @@ from struct import pack, unpack_from -def i8(c: int | bytes) -> int: - return c if c.__class__ is int else c[0] # type: ignore[index, return-value] +def i8(c: bytes) -> int: + return c[0] def o8(i: int) -> bytes: