From 485d033b5f72b9211c2910117ce82b520aea629b 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(-) (limited to 'sub/ass_mp.h') 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