[evolution] I#1003 - ASAN: Left shift of 0xFF00 by 16 places cannot be represented in type 'int'



commit 807604535ab0531a38ef9d3eefffa01ddb32be47
Author: Milan Crha <mcrha redhat com>
Date:   Fri Jun 26 09:43:38 2020 +0200

    I#1003 - ASAN: Left shift of 0xFF00 by 16 places cannot be represented in type 'int'
    
    Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/1003

 src/e-util/e-misc-utils.c              |  6 +++---
 src/libgnomecanvas/gnome-canvas-rect.c |  8 ++++----
 src/libgnomecanvas/gnome-canvas-text.c | 10 ++--------
 src/libgnomecanvas/gnome-canvas.h      | 18 +++++++++---------
 4 files changed, 18 insertions(+), 24 deletions(-)
---
diff --git a/src/e-util/e-misc-utils.c b/src/e-util/e-misc-utils.c
index 7a178ef460..1908109a03 100644
--- a/src/e-util/e-misc-utils.c
+++ b/src/e-util/e-misc-utils.c
@@ -1376,9 +1376,9 @@ e_rgba_to_value (const GdkRGBA *rgba)
        blue = 255 * rgba->blue;
 
        return (guint32)
-               ((((red & 0xFF) << 16) |
-               ((green & 0xFF) << 8) |
-               (blue & 0xFF)) & 0xffffff);
+               ((((red & 0xFFu) << 16) |
+               ((green & 0xFFu) << 8) |
+               (blue & 0xFFu)) & 0xffffffu);
 }
 
 /**
diff --git a/src/libgnomecanvas/gnome-canvas-rect.c b/src/libgnomecanvas/gnome-canvas-rect.c
index 462a5cf23b..f3a5a8789f 100644
--- a/src/libgnomecanvas/gnome-canvas-rect.c
+++ b/src/libgnomecanvas/gnome-canvas-rect.c
@@ -94,10 +94,10 @@ get_rgba_from_color (GdkColor *color)
        bb = 0xFF * color->blue / 65535.0;
        aa = 0xFF;
 
-       return (rr & 0xFF) << 24 |
-               (gg & 0xFF) << 16 |
-               (bb & 0xFF) << 8 |
-               (aa & 0xFF);
+       return (rr & 0xFFu) << 24 |
+               (gg & 0xFFu) << 16 |
+               (bb & 0xFFu) << 8 |
+               (aa & 0xFFu);
 }
 
 static gboolean
diff --git a/src/libgnomecanvas/gnome-canvas-text.c b/src/libgnomecanvas/gnome-canvas-text.c
index 43e6e76a78..63de7aed8c 100644
--- a/src/libgnomecanvas/gnome-canvas-text.c
+++ b/src/libgnomecanvas/gnome-canvas-text.c
@@ -931,10 +931,7 @@ gnome_canvas_text_set_property (GObject *object,
                if (color_name) {
                        GdkColor color;
                        if (gdk_color_parse (color_name, &color)) {
-                               text->rgba = ((color.red & 0xff00) << 16 |
-                                             (color.green & 0xff00) << 8 |
-                                             (color.blue & 0xff00) |
-                                             0xff);
+                               text->rgba = GNOME_CANVAS_COLOR (color.red, color.green, color.blue);
                        } else {
                                g_warning (
                                        "%s: Failed to parse color form string '%s'",
@@ -947,10 +944,7 @@ gnome_canvas_text_set_property (GObject *object,
        case PROP_FILL_COLOR_GDK:
                pcolor = g_value_get_boxed (value);
                if (pcolor) {
-                       text->rgba = ((pcolor->red & 0xff00) << 16 |
-                                     (pcolor->green & 0xff00) << 8|
-                                     (pcolor->blue & 0xff00) |
-                                     0xff);
+                       text->rgba = GNOME_CANVAS_COLOR (pcolor->red, pcolor->green, pcolor->blue);
                } else {
                        text->rgba = 0;
                }
diff --git a/src/libgnomecanvas/gnome-canvas.h b/src/libgnomecanvas/gnome-canvas.h
index 675de55742..ebd58045a1 100644
--- a/src/libgnomecanvas/gnome-canvas.h
+++ b/src/libgnomecanvas/gnome-canvas.h
@@ -46,15 +46,15 @@ G_BEGIN_DECLS
  * [0, 255].
  */
 
-#define GNOME_CANVAS_COLOR(r, g, b) ((((guint) (r) & 0xff) << 24) \
-                                    | (((guint) (g) & 0xff) << 16) \
-                                    | (((guint) (b) & 0xff) << 8) \
-                                    | 0xff)
-
-#define GNOME_CANVAS_COLOR_A(r, g, b, a) ((((guint) (r) & 0xff) << 24) \
-                                         | (((guint) (g) & 0xff) << 16) \
-                                         | (((guint) (b) & 0xff) << 8) \
-                                         | ((guint) (a) & 0xff))
+#define GNOME_CANVAS_COLOR(r, g, b) ((((guint) (r) & 0xffu) << 24) \
+                                    | (((guint) (g) & 0xffu) << 16) \
+                                    | (((guint) (b) & 0xffu) << 8) \
+                                    | 0xffu)
+
+#define GNOME_CANVAS_COLOR_A(r, g, b, a) ((((guint) (r) & 0xffu) << 24) \
+                                         | (((guint) (g) & 0xffu) << 16) \
+                                         | (((guint) (b) & 0xffu) << 8) \
+                                         | ((guint) (a) & 0xffu))
 
 typedef struct _GnomeCanvas           GnomeCanvas;
 typedef struct _GnomeCanvasClass      GnomeCanvasClass;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]