eina: fix possible memory leak on failure in eina_tiler_equal.
CID 1216618, 1216615, 1216614.
This commit is contained in:
parent
0902b6a6f8
commit
ba53bf8533
|
@ -1506,6 +1506,7 @@ eina_tiler_equal(Eina_Tiler *t1,
|
||||||
Eina_Iterator *itr1, *itr2;
|
Eina_Iterator *itr1, *itr2;
|
||||||
Eina_Rectangle *rect1, *rect2;
|
Eina_Rectangle *rect1, *rect2;
|
||||||
Eina_Bool next_t1 = EINA_FALSE, next_t2 = EINA_FALSE;
|
Eina_Bool next_t1 = EINA_FALSE, next_t2 = EINA_FALSE;
|
||||||
|
Eina_Bool r = EINA_FALSE;
|
||||||
|
|
||||||
EINA_MAGIC_CHECK_TILER(t1, EINA_FALSE);
|
EINA_MAGIC_CHECK_TILER(t1, EINA_FALSE);
|
||||||
EINA_MAGIC_CHECK_TILER(t2, EINA_FALSE);
|
EINA_MAGIC_CHECK_TILER(t2, EINA_FALSE);
|
||||||
|
@ -1517,9 +1518,9 @@ eina_tiler_equal(Eina_Tiler *t1,
|
||||||
itr2 = eina_tiler_iterator_new(t2);
|
itr2 = eina_tiler_iterator_new(t2);
|
||||||
|
|
||||||
if ((!eina_iterator_next(itr1, (void**)(void*)(&rect1))) && (!rect1))
|
if ((!eina_iterator_next(itr1, (void**)(void*)(&rect1))) && (!rect1))
|
||||||
return EINA_FALSE;
|
goto first_fail;
|
||||||
if ((!eina_iterator_next(itr2, (void**)(void*)(&rect2))) && (!rect2))
|
if ((!eina_iterator_next(itr2, (void**)(void*)(&rect2))) && (!rect2))
|
||||||
return EINA_FALSE;
|
goto second_fail;
|
||||||
|
|
||||||
while((rect1) && (rect2))
|
while((rect1) && (rect2))
|
||||||
{
|
{
|
||||||
|
@ -1530,26 +1531,30 @@ eina_tiler_equal(Eina_Tiler *t1,
|
||||||
(rect1->w != rect2->w) ||
|
(rect1->w != rect2->w) ||
|
||||||
(rect1->h != rect2->h))
|
(rect1->h != rect2->h))
|
||||||
{
|
{
|
||||||
return EINA_FALSE;
|
goto second_fail;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return EINA_FALSE;
|
goto second_fail;
|
||||||
|
|
||||||
next_t1 = eina_iterator_next(itr1, (void**)&rect1);
|
next_t1 = eina_iterator_next(itr1, (void**)&rect1);
|
||||||
next_t2 = eina_iterator_next(itr2, (void**)&rect2);
|
next_t2 = eina_iterator_next(itr2, (void**)&rect2);
|
||||||
|
|
||||||
if (next_t1 != next_t2)
|
if (next_t1 != next_t2)
|
||||||
return EINA_FALSE;
|
goto second_fail;
|
||||||
|
|
||||||
if (!next_t1 && !next_t2)
|
if (!next_t1 && !next_t2)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
r = EINA_TRUE;
|
||||||
|
|
||||||
|
second_fail:
|
||||||
eina_iterator_free(itr1);
|
eina_iterator_free(itr1);
|
||||||
|
first_fail:
|
||||||
eina_iterator_free(itr2);
|
eina_iterator_free(itr2);
|
||||||
|
|
||||||
return EINA_TRUE;
|
return r;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue