# HG changeset patch # User truelight # Date 1181566287 0 # Node ID ac13e9ecd231622d1fa4c8c1b011ca13939d3255 # Parent 134093da7464f96a8628fd20491801eec68823cf (svn r10095) -Fix: avoid reading outside the buffer because of scaling problems diff -r 134093da7464 -r ac13e9ecd231 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;