From 0c4cb3d1539fefa66c05d131385e35fb2a205fa3 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 4 Dec 2023 20:01:15 -0800
Subject: [PATCH] Fixed warning C26451: Arithmetic overflow: Using operator
'<<' on a 4 byte value and then casting the result to a 8 byte value. Cast
the value to the wider type before calling operator '<<' to avoid overflow
(io.2).
---
src/video/yuv2rgb/yuv_rgb.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/video/yuv2rgb/yuv_rgb.c b/src/video/yuv2rgb/yuv_rgb.c
index bf4002014af1..f24b27b4f6f0 100644
--- a/src/video/yuv2rgb/yuv_rgb.c
+++ b/src/video/yuv2rgb/yuv_rgb.c
@@ -31,6 +31,11 @@ typedef struct
// |G| = 1/PRECISION_FACTOR * |y_factor u_g_factor v_g_factor| * | U-128 |
// |B| |y_factor u_b_factor 0 | | V-128 |
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable : 26451)
+#endif
+
#define V(value) (int16_t)((value*PRECISION_FACTOR)+0.5)
// for ITU-T T.871, values can be found in section 7
@@ -56,6 +61,10 @@ static const RGB2YUVParam RGB2YUV[3] = {
{/*.y_shift=*/ 16, /*.matrix=*/ {{V(0.1826), V(0.6142), V(0.062)}, {-V(0.1006), -V(0.3386), V(0.4392)}, {V(0.4392), -V(0.3989), -V(0.0403)}}}
};
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
/* The various layouts of YUV data we support */
#define YUV_FORMAT_420 1
#define YUV_FORMAT_422 2