Evas filters: fix clip to target calculation

It was possible to keep negative values for dx,dy which would
then draw pixels out of bounds (= crash).

Make check crashed after the previous commit.

@fix
This commit is contained in:
Jean-Philippe Andre 2014-03-03 17:45:15 +09:00
parent e05885e0e3
commit 8e795109ac
1 changed files with 6 additions and 0 deletions

View File

@ -1558,6 +1558,7 @@ _clip_to_target(int *sx /* OUT */, int *sy /* OUT */, int sw, int sh,
{
if (ox > 0)
{
(*sx) = 0;
(*dx) = ox;
(*cols) = sw;
if (((*dx) + (*cols)) > (dw))
@ -1565,18 +1566,21 @@ _clip_to_target(int *sx /* OUT */, int *sy /* OUT */, int sw, int sh,
}
else if (ox < 0)
{
(*dx) = 0;
(*sx) = (-ox);
(*cols) = sw - (*sx);
if ((*cols) > dw) (*cols) = dw;
}
else
{
(*dx) = 0;
(*cols) = sw;
if ((*cols) > dw) (*cols) = dw;
}
if (oy > 0)
{
(*sy) = 0;
(*dy) = oy;
(*rows) = sh;
if (((*dy) + (*rows)) > (dh))
@ -1584,12 +1588,14 @@ _clip_to_target(int *sx /* OUT */, int *sy /* OUT */, int sw, int sh,
}
else if (oy < 0)
{
(*dy) = 0;
(*sy) = (-oy);
(*rows) = sh - (*sy);
if ((*rows) > dh) (*rows) = dh;
}
else
{
(*dy) = 0;
(*rows) = sh;
if ((*rows) > dh) (*rows) = dh;
}