~ruther/dwl

87d87cc4041a997d00ebf234ca5118b9248a3b95 — krypek 2 years ago 569f554
Fix comparison between signed and unsigned int

When c->bw is 0, the right side of the MAX functions gets turned into an unsigned integer and that results in -1 being the outcome.
This causes big issues in xwayland clients.
1 files changed, 2 insertions(+), 2 deletions(-)

M dwl.c
M dwl.c => dwl.c +2 -2
@@ 389,8 389,8 @@ applybounds(Client *c, struct wlr_box *bbox)
		struct wlr_box min = {0}, max = {0};
		client_get_size_hints(c, &max, &min);
		/* try to set size hints */
		c->geom.width = MAX(min.width + (2 * c->bw), c->geom.width);
		c->geom.height = MAX(min.height + (2 * c->bw), c->geom.height);
		c->geom.width = MAX(min.width + (2 * (int)c->bw), c->geom.width);
		c->geom.height = MAX(min.height + (2 * (int)c->bw), c->geom.height);
		/* Some clients set them max size to INT_MAX, which does not violates
		 * the protocol but its innecesary, they can set them max size to zero. */
		if (max.width > 0 && !(2 * c->bw > INT_MAX - max.width)) /* Checks for overflow */

Do not follow this link