diff options
author | Alan Coopersmith <alan.coopersmith@oracle.com> | 2011-02-11 14:49:17 -0800 |
---|---|---|
committer | Ulrich Sibiller <uli42@gmx.de> | 2016-10-19 21:40:25 +0200 |
commit | 2618bd3fc7274be77d7b2cf87018dc21c779bdfa (patch) | |
tree | 1b25e754eb92d6b8832db68dc63993b25c2afd26 | |
parent | 07fae919a4474abfb55f41ed3d07bf93e74e9154 (diff) | |
download | nx-libs-2618bd3fc7274be77d7b2cf87018dc21c779bdfa.tar.gz nx-libs-2618bd3fc7274be77d7b2cf87018dc21c779bdfa.tar.bz2 nx-libs-2618bd3fc7274be77d7b2cf87018dc21c779bdfa.zip |
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: Alan Coopersmith <alan.coopersmith@oracle.com>
Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
-rw-r--r-- | nx-X11/lib/X11/Region.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/nx-X11/lib/X11/Region.c b/nx-X11/lib/X11/Region.c index 5ce276279..5491dbd0e 100644 --- a/nx-X11/lib/X11/Region.c +++ b/nx-X11/lib/X11/Region.c @@ -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); |