(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:
		
							
								
								
									
										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) {
 | 
			
		||||
		width += left;
 | 
			
		||||
		if (width < 0) return false;
 | 
			
		||||
		if (width <= 0) return false;
 | 
			
		||||
		n->left = -left;
 | 
			
		||||
		left = 0;
 | 
			
		||||
	} else {
 | 
			
		||||
@@ -1871,13 +1871,13 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh
 | 
			
		||||
 | 
			
		||||
	if (width > o->width - left) {
 | 
			
		||||
		width = o->width - left;
 | 
			
		||||
		if (width < 0) return false;
 | 
			
		||||
		if (width <= 0) return false;
 | 
			
		||||
	}
 | 
			
		||||
	n->width = width;
 | 
			
		||||
 | 
			
		||||
	if ((top -= o->top) < 0) {
 | 
			
		||||
		height += top;
 | 
			
		||||
		if (height < 0) return false;
 | 
			
		||||
		if (height <= 0) return false;
 | 
			
		||||
		n->top = -top;
 | 
			
		||||
		top = 0;
 | 
			
		||||
	} else {
 | 
			
		||||
@@ -1888,7 +1888,7 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh
 | 
			
		||||
 | 
			
		||||
	if (height > o->height - top) {
 | 
			
		||||
		height = o->height - top;
 | 
			
		||||
		if (height < 0) return false;
 | 
			
		||||
		if (height <= 0) return false;
 | 
			
		||||
	}
 | 
			
		||||
	n->height = height;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user