From 0410214b277aca39558ef173a6fce037d6deab7a Mon Sep 17 00:00:00 2001 From: Felix Kratz <felix.kratz@tu-dortmund.de> Date: Fri, 19 Aug 2022 14:42:10 +0200 Subject: [PATCH] stabilize against uint32_t underflow --- src/bar.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/bar.c b/src/bar.c index 4a3d1b0..795c702 100644 --- a/src/bar.c +++ b/src/bar.c @@ -149,9 +149,15 @@ void bar_calculate_bounds(struct bar* bar) { bar, POSITION_CENTER); - uint32_t bar_left_first_item_x = g_bar_manager.background.padding_left; + uint32_t bar_left_first_item_x = g_bar_manager.background.padding_left > 0 + ? g_bar_manager.background.padding_left + : 0; + uint32_t bar_right_first_item_x = bar->window.frame.size.width - - g_bar_manager.background.padding_right; + - (g_bar_manager.background.padding_right + > 0 + ? g_bar_manager.background.padding_right + : 0 ); uint32_t bar_center_first_item_x = (bar->window.frame.size.width - 2*g_bar_manager.margin @@ -192,11 +198,15 @@ void bar_calculate_bounds(struct bar* bar) { if (bar_item->position == POSITION_RIGHT || bar_item->position == POSITION_CENTER_LEFT) { - *next_position -= bar_item_display_length - + bar_item->background.padding_right; + + *next_position = min(*next_position - bar_item_display_length + - bar_item->background.padding_right, + bar->window.frame.size.width + - bar_item_display_length ); } else { - *next_position += bar_item->background.padding_left; + *next_position += max((int)-*next_position, + bar_item->background.padding_left); } bar_item->graph.rtl = rtl;