mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
52 lines
1.7 KiB
Diff
52 lines
1.7 KiB
Diff
The raster effects engine in some places multiplied a negative number by the
|
|
unsigned Bpp value, and added it to a pointer. The intention was probably to
|
|
subtract, which doesn't happen because of the implicit conversion to unsigned.
|
|
However, with 32-bit pointers the value wrapped around, leading to the intended
|
|
result.
|
|
|
|
Convert the result to a signed integer so it will subtract when intended.
|
|
|
|
Index: dgen-1.23/ras-drawplane.h
|
|
===================================================================
|
|
--- dgen-1.23.orig/ras-drawplane.h 2007-12-09 20:27:28.000000000 -0200
|
|
+++ dgen-1.23/ras-drawplane.h 2007-12-09 20:27:41.000000000 -0200
|
|
@@ -67,7 +67,7 @@
|
|
tile_line = tiles + xsize * yoff;
|
|
scan = yscroll & 7;
|
|
|
|
- where = dest + (xstart + (xscroll & 7)) * Bpp;
|
|
+ where = dest + (signed)((xstart + (xscroll & 7)) * Bpp);
|
|
|
|
for(x = -1; x < w; ++x)
|
|
{
|
|
Index: dgen-1.23/ras.cpp
|
|
===================================================================
|
|
--- dgen-1.23.orig/ras.cpp 2007-12-09 20:27:28.000000000 -0200
|
|
+++ dgen-1.23/ras.cpp 2007-12-09 20:27:41.000000000 -0200
|
|
@@ -546,7 +546,7 @@
|
|
start = 24;
|
|
}
|
|
add = -2;
|
|
- where = dest + (start * Bpp);
|
|
+ where = dest + (signed)(start * Bpp);
|
|
for(x=-1; x<w; ++x)
|
|
{
|
|
if(!total_window)
|
|
@@ -611,7 +611,7 @@
|
|
// x flipped?
|
|
if(which & 0x800)
|
|
{
|
|
- where = dest + (xend * Bpp);
|
|
+ where = dest + (signed)(xend * Bpp);
|
|
for(tx = xend; tx >= x; tx -= 8)
|
|
{
|
|
if(tx > -8 && tx < 320)
|
|
@@ -620,7 +620,7 @@
|
|
where -= Bpp_times8;
|
|
}
|
|
} else {
|
|
- where = dest + (x * Bpp);
|
|
+ where = dest + (signed)(x * Bpp);
|
|
for(tx = x; tx <= xend; tx += 8)
|
|
{
|
|
if(tx > -8 && tx < 320)
|