Changeset - r6855:5cad66fb93e7
[Not reviewed]
master
0 1 0
truelight - 17 years ago 2007-06-11 12:51:27
truelight@openttd.org
(svn r10095) -Fix: avoid reading outside the buffer because of scaling problems
1 file changed with 4 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/blitter/8bpp_optimized.cpp
Show inline comments
 
@@ -134,6 +134,7 @@ Sprite *Blitter_8bppOptimized::Encode(Sp
 
			uint pixels = 0;
 
			uint last_color = 0;
 
			uint count_index = 0;
 
			uint rx = 0;
 
			src = &sprite->data[ScaleByZoom(y, (ZoomLevel)i) * sprite->width];
 

	
 
			for (int x = 0; x < UnScaleByZoom(sprite->width, (ZoomLevel)i); x++) {
 
@@ -144,6 +145,9 @@ Sprite *Blitter_8bppOptimized::Encode(Sp
 
				for (int j = 0; j < ScaleByZoom(1, (ZoomLevel)i); j++) {
 
					if (src->m != 0) { color = src->m; count++; }
 
					src++;
 
					rx++;
 
					/* Because of the scaling it might happen we read outside the buffer. Avoid that. */
 
					if (rx == sprite->width) break;
 
				}
 
				/* If more than 12.5% of the pixels are non-transparent, make thisone non-transparent too */
 
				if (count < ScaleByZoom(1, (ZoomLevel)i) / 8) color = 0;
0 comments (0 inline, 0 general)