(svn r10095) -Fix: avoid reading outside the buffer because of scaling problems
authortruelight
Mon, 11 Jun 2007 12:51:27 +0000
changeset 6855 ac13e9ecd231
parent 6854 134093da7464
child 6856 aa95d0fd29f1
(svn r10095) -Fix: avoid reading outside the buffer because of scaling problems
src/blitter/8bpp_optimized.cpp
--- a/src/blitter/8bpp_optimized.cpp	Mon Jun 11 12:44:02 2007 +0000
+++ b/src/blitter/8bpp_optimized.cpp	Mon Jun 11 12:51:27 2007 +0000
@@ -134,6 +134,7 @@
 			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 @@
 				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;