Commit 2618bd3f authored by Alan Coopersmith's avatar Alan Coopersmith Committed by Ulrich Sibiller

Clean up memory when first XCreateRegion succeeds and second fails

Error: Memory leak (CWE 401) Memory leak of pointer 's' allocated with XCreateRegion() at line 387 of /export/alanc/X.Org/sx86-gcc/lib/libX11/nx-X11/lib/X11/Region.c in function 'XShrinkRegion'. 's' allocated at line 387 with XCreateRegion(). s leaks when s != 0 at line 387. Error: Memory leak (CWE 401) Memory leak of pointer 'tra' allocated with XCreateRegion() at line 1452 of /export/alanc/X.Org/sx86-gcc/lib/libX11/nx-X11/lib/X11/Region.c in function 'XXorRegion'. 'tra' allocated at line 1451 with XCreateRegion(). tra leaks when tra != 0 at line 1451. [ This bug was found by the Parfait 0.3.6 bug checking tool. For more information see http://labs.oracle.com/projects/parfait/ ] Signed-off-by: 's avatarAlan Coopersmith <alan.coopersmith@oracle.com> Backported-to-NX-by: 's avatarUlrich Sibiller <uli42@gmx.de>
parent 07fae919
......@@ -384,7 +384,12 @@ XShrinkRegion(
int grow;
if (!dx && !dy) return 0;
if ((! (s = XCreateRegion())) || (! (t = XCreateRegion()))) return 0;
if (! (s = XCreateRegion()) )
return 0;
if (! (t = XCreateRegion()) ) {
XDestroyRegion(s);
return 0;
}
if ((grow = (dx < 0))) dx = -dx;
if (dx) Compress(r, s, t, (unsigned) 2*dx, TRUE, grow);
if ((grow = (dy < 0))) dy = -dy;
......@@ -1448,8 +1453,12 @@ XXorRegion(Region sra, Region srb, Region dr)
{
Region tra, trb;
if ((! (tra = XCreateRegion())) || (! (trb = XCreateRegion())))
if (! (tra = XCreateRegion()) )
return 0;
if (! (trb = XCreateRegion()) ) {
XDestroyRegion(tra);
return 0;
}
(void) XSubtractRegion(sra,srb,tra);
(void) XSubtractRegion(srb,sra,trb);
(void) XUnionRegion(tra,trb,dr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment