From c9e6e7cc045f5ac8477b1c4dcfe34c12f0253397 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 10 May 2014 10:38:05 +0200 Subject: sub: fix undefined behavior in ASS color calculation This might shift bits into the sign, which is undefined behavior. Making the right operand unsigned was supposed to help with this, but it seems it did nothing, and C99 makes the result type dependent on the left operand only. --- sub/ass_mp.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sub/ass_mp.h b/sub/ass_mp.h index 8fb9104662..86c5c7ff0a 100644 --- a/sub/ass_mp.h +++ b/sub/ass_mp.h @@ -31,7 +31,7 @@ #define MP_ASS_FONT_PLAYRESY 288 #define MP_ASS_RGBA(r, g, b, a) \ - (((r) << 24U) | ((g) << 16) | ((b) << 8) | (0xFF - (a))) + (((unsigned)(r) << 24) | ((g) << 16) | ((b) << 8) | (0xFF - (a))) // m_color argument #define MP_ASS_COLOR(c) MP_ASS_RGBA((c).r, (c).g, (c).b, (c).a) -- cgit v1.2.3