From ccc63521d07a946c1902b79250a52612319b1605 Mon Sep 17 00:00:00 2001 From: Benign X <1341398182@qq.com> Date: Wed, 20 Dec 2023 14:17:19 +0800 Subject: [PATCH] fix(lv_canvas): fix undefined behavior (#5059) ```bash Left shift of 255 by 24 places cannot be represented in type 'int' at 0x102d47f44 lv_canvas_fill_bg (lv_canvas.c:310) at 0x102812b30 canvas_basic_render(unsigned char*, unsigned char, char const*, char const*) (main.cpp:38) at 0x102811fd4 canvas_blend_test(_lv_obj_t*, _lv_draw_image_dsc_t*, char const*, char const*, unsigned char, unsigned int) (main.cpp:108) at 0x102814f50 canvas_draw(char const*, unsigned char) (main.cpp:154) at 0x102814858 test_xrgb8888() (main.cpp:162) at 0x10281536c main (main.cpp:218) at 0x18d0790dc ``` --- src/widgets/canvas/lv_canvas.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/canvas/lv_canvas.c b/src/widgets/canvas/lv_canvas.c index d16958f32..b5611833e 100644 --- a/src/widgets/canvas/lv_canvas.c +++ b/src/widgets/canvas/lv_canvas.c @@ -311,7 +311,7 @@ void lv_canvas_fill_bg(lv_obj_t * obj, lv_color_t color, lv_opa_t opa) uint32_t c32 = lv_color_to_u32(color); if(header->cf == LV_COLOR_FORMAT_ARGB8888) { c32 &= 0x00ffffff; - c32 |= opa << 24; + c32 |= (uint32_t)opa << 24; } for(y = 0; y < header->h; y++) { uint32_t * buf32 = (uint32_t *)(data + y * stride);