From a3d9355b99fd98c0d95168c4e8d9ecc206823a95 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <randrianasulu@gmail.com>
Date: Tue, 12 Oct 2021 13:56:27 +0300
Subject: [PATCH 3/3] Avoid two undefined behaviors in vframe.C

---
 cinelerra-5.1/guicast/vframe.C | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/cinelerra-5.1/guicast/vframe.C b/cinelerra-5.1/guicast/vframe.C
index 44d7f97e..8e90cca1 100644
--- a/cinelerra-5.1/guicast/vframe.C
+++ b/cinelerra-5.1/guicast/vframe.C
@@ -1403,12 +1403,12 @@ int VFrame::get_memory_usage()
 // a (~alpha) transparency, 0x00==solid .. 0xff==transparent
 void VFrame::set_pixel_color(int rgb, int a)
 {
-	pixel_rgb = (~a<<24) | (rgb&0xffffff);
+	pixel_rgb = (~(unsigned int)a<<24) | (rgb&0xffffff);
 	int ir = 0xff & (pixel_rgb >> 16);
 	int ig = 0xff & (pixel_rgb >> 8);
 	int ib = 0xff & (pixel_rgb >> 0);
 	YUV::yuv.rgb_to_yuv_8(ir, ig, ib);
-	pixel_yuv = (~a<<24) | (ir<<16) | (ig<<8) | (ib<<0);
+	pixel_yuv = (~(unsigned int)a<<24) | (ir<<16) | (ig<<8) | (ib<<0);
 }
 
 void VFrame::set_stiple(int mask)
-- 
2.33.0

