[PATCH:libX11 1/2] XCreate{Pix, Bit}map...Data: Free pixmap in error path if XCreateGC fails
Aaron Plattner
aplattner at nvidia.com
Mon Jul 2 14:25:54 PDT 2012
On 06/29/2012 11:11 PM, Alan Coopersmith wrote:
> Fixes leaks in error paths found by Parfait 1.0.0:
>
> Error: X Resource Leak
> Leaked X Resource pix
> at line 62 of CrBFData.c in function 'XCreateBitmapFromData'.
> pix initialized at line 60 with XCreatePixmap
> Error: X Resource Leak
> Leaked X Resource pix
> at line 70 of CrPFBData.c in function 'XCreatePixmapFromBitmapData'.
> pix initialized at line 66 with XCreatePixmap
>
> Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
Reviewed-by: Aaron Plattner <aplattner at nvidia.com>
-- Aaron
> ---
> src/CrBFData.c | 7 +++++--
> src/CrPFBData.c | 7 +++++--
> 2 files changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/src/CrBFData.c b/src/CrBFData.c
> index 4490956..9515875 100644
> --- a/src/CrBFData.c
> +++ b/src/CrBFData.c
> @@ -58,8 +58,11 @@ Pixmap XCreateBitmapFromData(
> Pixmap pix;
>
> pix = XCreatePixmap(display, d, width, height, 1);
> - if (! (gc = XCreateGC(display, pix, (unsigned long) 0, (XGCValues *) 0)))
> - return (Pixmap) None;
> + gc = XCreateGC(display, pix, (unsigned long) 0, (XGCValues *) 0);
> + if (gc == NULL) {
> + XFreePixmap(display, pix);
> + return (Pixmap) None;
> + }
> ximage.height = height;
> ximage.width = width;
> ximage.depth = 1;
> diff --git a/src/CrPFBData.c b/src/CrPFBData.c
> index 57cd153..d343420 100644
> --- a/src/CrPFBData.c
> +++ b/src/CrPFBData.c
> @@ -66,8 +66,11 @@ Pixmap XCreatePixmapFromBitmapData(
> pix = XCreatePixmap(display, d, width, height, depth);
> gcv.foreground = fg;
> gcv.background = bg;
> - if (! (gc = XCreateGC(display, pix, GCForeground|GCBackground, &gcv)))
> - return (Pixmap) NULL;
> + gc = XCreateGC(display, pix, GCForeground|GCBackground, &gcv);
> + if (gc == NULL) {
> + XFreePixmap(display, pix);
> + return (Pixmap) None;
> + }
> ximage.height = height;
> ximage.width = width;
> ximage.depth = 1;
>
More information about the xorg-devel
mailing list