mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 22:28:56 +00:00
(svn r6351) -Fix: Due to some off-by-one errors the width or height of a clipping rectangle could become 0, which isn't sensible. This should fix a very rare and hard to trigger assertion in GfxFillRect()
This commit is contained in:
parent
0fc0586bbf
commit
07199603b4
8
gfx.c
8
gfx.c
@ -1862,7 +1862,7 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh
|
|||||||
|
|
||||||
if ((left -= o->left) < 0) {
|
if ((left -= o->left) < 0) {
|
||||||
width += left;
|
width += left;
|
||||||
if (width < 0) return false;
|
if (width <= 0) return false;
|
||||||
n->left = -left;
|
n->left = -left;
|
||||||
left = 0;
|
left = 0;
|
||||||
} else {
|
} else {
|
||||||
@ -1871,13 +1871,13 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh
|
|||||||
|
|
||||||
if (width > o->width - left) {
|
if (width > o->width - left) {
|
||||||
width = o->width - left;
|
width = o->width - left;
|
||||||
if (width < 0) return false;
|
if (width <= 0) return false;
|
||||||
}
|
}
|
||||||
n->width = width;
|
n->width = width;
|
||||||
|
|
||||||
if ((top -= o->top) < 0) {
|
if ((top -= o->top) < 0) {
|
||||||
height += top;
|
height += top;
|
||||||
if (height < 0) return false;
|
if (height <= 0) return false;
|
||||||
n->top = -top;
|
n->top = -top;
|
||||||
top = 0;
|
top = 0;
|
||||||
} else {
|
} else {
|
||||||
@ -1888,7 +1888,7 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh
|
|||||||
|
|
||||||
if (height > o->height - top) {
|
if (height > o->height - top) {
|
||||||
height = o->height - top;
|
height = o->height - top;
|
||||||
if (height < 0) return false;
|
if (height <= 0) return false;
|
||||||
}
|
}
|
||||||
n->height = height;
|
n->height = height;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user