]> git.sur5r.net Git - i3/i3/commitdiff
Cast unsigned to signed before comparison
authorIngo Bürk <ingo.buerk@tngtech.com>
Thu, 3 Dec 2015 17:57:02 +0000 (18:57 +0100)
committerIngo Bürk <ingo.buerk@tngtech.com>
Thu, 3 Dec 2015 17:57:02 +0000 (18:57 +0100)
The values of a Rect are unsigned, but can contain signed values.
Using MAX when the value is negative causes incorrect behavior and
makes the result stay negative, which is what we wanted to avoid here
in the first place.

Fix by properly casting the value for the comparison.

fixes #2094

src/x.c

diff --git a/src/x.c b/src/x.c
index f1f971e94286fec0c1422f3375def5ca867462f7..faa892aa06b4422ce105df3414522b60e5fb63b5 100644 (file)
--- a/src/x.c
+++ b/src/x.c
@@ -783,8 +783,8 @@ void x_push_node(Con *con) {
             /* Ensure we have valid dimensions for our surface. */
             // TODO This is probably a bug in the condition above as we should never enter this path
             //      for height == 0. Also, we should probably handle width == 0 the same way.
-            int width = MAX(rect.width, 1);
-            int height = MAX(rect.height, 1);
+            int width = MAX((int32_t)rect.width, 1);
+            int height = MAX((int32_t)rect.height, 1);
 
             xcb_create_pixmap_checked(conn, win_depth, con->frame_buffer.id, con->frame.id, width, height);
             draw_util_surface_init(conn, &(con->frame_buffer), con->frame_buffer.id,