fix valgrind complaint - indeed corner case.

SVN revision: 49414
This commit is contained in:
Carsten Haitzler 2010-06-03 14:02:46 +00:00
parent eb4b780754
commit 3a5502362e
3 changed files with 32 additions and 15 deletions

View File

@ -8,7 +8,7 @@
for (y = ystart; y <= yend; y++)
{
int x, w, ww;
FPc u, v, ud, vd, dv;
FPc u, v, ud, vd, dv, ue, ve;
DATA32 *d, *s;
#ifdef COLMUL
FPc cv, cd, cc; // col
@ -39,9 +39,19 @@
ww = w;
u = span->u[0] << FPI;
if (u < 0) u = 0;
else if (u >= swp) u = swp - 1;
v = span->v[0] << FPI;
ud = ((span->u[1] << FPI) - u) / w;
vd = ((span->v[1] << FPI) - v) / w;
if (v < 0) v = 0;
else if (v >= shp) v = shp - 1;
ue = span->u[1] << FPI;
if (ue < 0) ue = 0;
else if (ue >= swp) ue = swp - 1;
ve = span->v[1] << FPI;
if (ve < 0) ve = 0;
else if (ve >= shp) ve = shp - 1;
ud = (ue - u) / w;
vd = (ve - v) / w;
tl = (long long)ud * (w << FP);
tl = tl / dv;
ud = tl;
@ -113,7 +123,7 @@
for (y = ystart; y <= yend; y++)
{
int x, w, ww;
FPc u, v, ud, vd;
FPc u, v, ud, vd, ue, ve;
DATA32 *d, *s;
#ifdef COLMUL
FPc cv, cd, cc; // col
@ -135,12 +145,19 @@
if (w <= 0) continue;
ww = w;
u = span->u[0] << FPI;
if (u < 0) u = 0;
else if (u >= swp) u = swp - 1;
v = span->v[0] << FPI;
ud = ((span->u[1] << FPI) - u) / w;
vd = ((span->v[1] << FPI) - v) / w;
if (ud < 0) u -= 1;
if (vd < 0) v -= 1;
if (v < 0) v = 0;
else if (v >= shp) v = shp - 1;
ue = span->u[1] << FPI;
if (ue < 0) ue = 0;
else if (ue >= swp) ue = swp - 1;
ve = span->v[1] << FPI;
if (ve < 0) ve = 0;
else if (ve >= shp) ve = shp - 1;
ud = (ue - u) / w;
vd = (ve - v) / w;
if (direct)
d = dst->image.data + (y * dst->cache_entry.w) + x;
else

View File

@ -106,7 +106,7 @@ FUNC_NAME(RGBA_Image *src, RGBA_Image *dst,
func = evas_common_gfx_func_composite_pixel_span_get(src, dst, cw, dc->render_op);
src->cache_entry.flags.alpha = pa;
}
if (!havecol)
{
#undef COLMUL

View File

@ -93,10 +93,10 @@
{
# ifdef COLMUL
DATA32 val1, cval; // col
# endif
# endif
# ifdef COLBLACK
*d = 0xff000000; // col
# else
# else
s = sp + ((v >> (FP + FPI)) * sw) +
(u >> (FP + FPI));
# ifdef COLMUL
@ -104,12 +104,12 @@
cval = INTERP_256((cv >> 16), c2, c1); // col
*d = MUL4_SYM(cval, val1);
cv += cd; // col
# else
# else
*d = *s;
# endif
# endif
u += ud;
v += vd;
# endif
# endif
d++;
ww--;
}