From 191f1476bdce41758084b92dcb5817c3f1508247 Mon Sep 17 00:00:00 2001 From: Liang Chang Date: Sat, 20 Feb 2021 22:15:56 +0800 Subject: [PATCH] dtappbuilder: set limits on the resize rectangle to avoid rollover. --- .../dtappbuilder/src/ab/abobj_resize.c | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/cde/programs/dtappbuilder/src/ab/abobj_resize.c b/cde/programs/dtappbuilder/src/ab/abobj_resize.c index 3cda041f1..c48b19354 100644 --- a/cde/programs/dtappbuilder/src/ab/abobj_resize.c +++ b/cde/programs/dtappbuilder/src/ab/abobj_resize.c @@ -795,51 +795,51 @@ make_rect ( { case NORTH: new_r->x = r->x; - new_r->y = y; + new_r->y = min(y, rect_bottom(r)); new_r->width = r->width; - new_r->height = (r->y + r->height) - y; + new_r->height = max(0, r->y + r->height - y); break; case SOUTH: new_r->x = r->x; new_r->y = r->y; new_r->width = r->width; - new_r->height = y - r->y; + new_r->height = max(0, y - r->y); break; case EAST: new_r->x = r->x; new_r->y = r->y; - new_r->width = x - r->x; + new_r->width = max(0, x - r->x); new_r->height = r->height; break; case WEST: - new_r->x = x; + new_r->x = min(x, rect_right(r)); new_r->y = r->y; - new_r->width = (r->x + r->width) - x; + new_r->width = max(0, r->x + r->width - x); new_r->height = r->height; break; case NORTH_EAST: new_r->x = r->x; - new_r->y = y; - new_r->width = x - r->x; - new_r->height = (r->y + r->height) - y; + new_r->y = min(y, rect_bottom(r)); + new_r->width = max(0, x - r->x); + new_r->height = max(0, r->y + r->height - y); break; case NORTH_WEST: - new_r->x = x; - new_r->y = y; - new_r->width = (r->x + r->width) - x; - new_r->height = (r->y + r->height) - y; + new_r->x = min(x, rect_right(r)); + new_r->y = min(y, rect_bottom(r)); + new_r->width = max(0, r->x + r->width - x); + new_r->height = max(0, r->y + r->height - y); break; case SOUTH_EAST: new_r->x = r->x; new_r->y = r->y; - new_r->width = x - r->x; - new_r->height = y - r->y; + new_r->width = max(0, x - r->x); + new_r->height = max(0, y - r->y); break; case SOUTH_WEST: - new_r->x = x; + new_r->x = min(x, rect_right(r)); new_r->y = r->y; - new_r->width = (r->x + r->width) - x; - new_r->height = y - r->y; + new_r->width = max(0, r->x + r->width - x); + new_r->height = max(0, y - r->y); break; } }