mirror of
https://github.com/reactos/reactos.git
synced 2025-05-07 18:56:48 +00:00
[WIN32K] Fix memory leak on failure in REGION_SetPolyPolygonRgn
This commit is contained in:
parent
4f0f5f6ff8
commit
a206b55838
1 changed files with 8 additions and 6 deletions
|
@ -3295,6 +3295,7 @@ REGION_SetPolyPolygonRgn(
|
||||||
POINTBLOCK *tmpPtBlock;
|
POINTBLOCK *tmpPtBlock;
|
||||||
UINT numFullPtBlocks = 0;
|
UINT numFullPtBlocks = 0;
|
||||||
UINT poly, total;
|
UINT poly, total;
|
||||||
|
BOOL bResult = FALSE;
|
||||||
|
|
||||||
/* Check if iMode is valid */
|
/* Check if iMode is valid */
|
||||||
if ((iMode != ALTERNATE) && (iMode != WINDING))
|
if ((iMode != ALTERNATE) && (iMode != WINDING))
|
||||||
|
@ -3370,8 +3371,7 @@ REGION_SetPolyPolygonRgn(
|
||||||
if (tmpPtBlock == NULL)
|
if (tmpPtBlock == NULL)
|
||||||
{
|
{
|
||||||
DPRINT1("Can't alloc tmpPtBlock\n");
|
DPRINT1("Can't alloc tmpPtBlock\n");
|
||||||
ExFreePoolWithTag(pETEs, TAG_REGION);
|
goto Cleanup;
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
curPtBlock->next = tmpPtBlock;
|
curPtBlock->next = tmpPtBlock;
|
||||||
|
@ -3426,8 +3426,7 @@ REGION_SetPolyPolygonRgn(
|
||||||
if (tmpPtBlock == NULL)
|
if (tmpPtBlock == NULL)
|
||||||
{
|
{
|
||||||
DPRINT1("Can't alloc tPB\n");
|
DPRINT1("Can't alloc tPB\n");
|
||||||
ExFreePoolWithTag(pETEs, TAG_REGION);
|
goto Cleanup;
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
curPtBlock->next = tmpPtBlock;
|
curPtBlock->next = tmpPtBlock;
|
||||||
curPtBlock = tmpPtBlock;
|
curPtBlock = tmpPtBlock;
|
||||||
|
@ -3452,8 +3451,11 @@ REGION_SetPolyPolygonRgn(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
REGION_FreeStorage(SLLBlock.next);
|
|
||||||
REGION_PtsToRegion(numFullPtBlocks, iPts, &FirstPtBlock, prgn);
|
REGION_PtsToRegion(numFullPtBlocks, iPts, &FirstPtBlock, prgn);
|
||||||
|
bResult = TRUE;
|
||||||
|
|
||||||
|
Cleanup:
|
||||||
|
REGION_FreeStorage(SLLBlock.next);
|
||||||
|
|
||||||
for (curPtBlock = FirstPtBlock.next; numFullPtBlocks-- > 0;)
|
for (curPtBlock = FirstPtBlock.next; numFullPtBlocks-- > 0;)
|
||||||
{
|
{
|
||||||
|
@ -3463,7 +3465,7 @@ REGION_SetPolyPolygonRgn(
|
||||||
}
|
}
|
||||||
|
|
||||||
ExFreePoolWithTag(pETEs, TAG_REGION);
|
ExFreePoolWithTag(pETEs, TAG_REGION);
|
||||||
return TRUE;
|
return bResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRGN
|
HRGN
|
||||||
|
|
Loading…
Reference in a new issue