From: raster Date: Thu, 3 Jun 2010 14:02:46 +0000 (+0000) Subject: fix valgrind complaint - indeed corner case. X-Git-Tag: submit/trunk/20120815.174732~2709 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f14d754e4df54ec14e2364318edd0b199cad90e0;p=profile%2Fivi%2Fevas.git fix valgrind complaint - indeed corner case. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/evas@49414 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/engines/common/evas_map_image_core.c b/src/lib/engines/common/evas_map_image_core.c index e18421c..d4788fe 100644 --- a/src/lib/engines/common/evas_map_image_core.c +++ b/src/lib/engines/common/evas_map_image_core.c @@ -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 diff --git a/src/lib/engines/common/evas_map_image_internal.c b/src/lib/engines/common/evas_map_image_internal.c index 94f129d..8026523 100644 --- a/src/lib/engines/common/evas_map_image_internal.c +++ b/src/lib/engines/common/evas_map_image_internal.c @@ -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 diff --git a/src/lib/engines/common/evas_map_image_loop.c b/src/lib/engines/common/evas_map_image_loop.c index aa067e0..3e6c402 100644 --- a/src/lib/engines/common/evas_map_image_loop.c +++ b/src/lib/engines/common/evas_map_image_loop.c @@ -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--; }