From 9a99ff00cdb6f36ae228b667bde4a2358f46e740 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Sat, 6 Jun 2026 20:17:15 -0500 Subject: [PATCH] convert: avoid left shift into sign bit Don't invoke undefined behavior due to integer promotion. Signed-off-by: Benjamin Gilbert --- openslide/_convert.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openslide/_convert.c b/openslide/_convert.c index 72df34d2..4427c72a 100644 --- a/openslide/_convert.c +++ b/openslide/_convert.c @@ -48,9 +48,9 @@ argb2rgba(PY_UINT32_T *buf, Py_ssize_t len) u8 g = 255 * ((val >> 8) & 0xff) / a; u8 b = 255 * ((val >> 0) & 0xff) / a; #ifdef WORDS_BIGENDIAN - val = r << 24 | g << 16 | b << 8 | a; + val = (PY_UINT32_T) r << 24 | g << 16 | b << 8 | a; #else - val = a << 24 | b << 16 | g << 8 | r; + val = (PY_UINT32_T) a << 24 | b << 16 | g << 8 | r; #endif buf[cur] = val; break;