[PATCH xserver/hw/xfree86/modes/xf86Crtc.c] trivial memory leak

vdb at picaros.org vdb at picaros.org
Sat Sep 17 09:55:47 PDT 2011


Anyone willing to review this triviality ? The code is included below.

This patch fixes a memory leak in xf86CrtcCreate().  It frees the 
crtc->gamma_red buffer when a quit on error occurs.

xf86CrtcPtr
xf86CrtcCreate (ScrnInfoPtr		scrn,
		const xf86CrtcFuncsRec	*funcs)
<...>

    crtc->gamma_size = 256;
->  crtc->gamma_red = malloc(3 * crtc->gamma_size * sizeof (CARD16));
    if (!crtc->gamma_red) {
	free(crtc);
	return NULL;
    }
    crtc->gamma_green = crtc->gamma_red + crtc->gamma_size;
    crtc->gamma_blue = crtc->gamma_green + crtc->gamma_size;

    if (xf86_config->crtc)
	crtcs = realloc(xf86_config->crtc,
			  (xf86_config->num_crtc + 1) * sizeof (xf86CrtcPtr));
    else
	crtcs = malloc((xf86_config->num_crtc + 1) * sizeof (xf86CrtcPtr));
    if (!crtcs)
    {
->	free(crtc);
->	return NULL;
    }

Signed-off-by: Servaas Vandenberghe <vdb at picaros.org>
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index c2814d4..74c8d66 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -133,6 +133,7 @@ xf86CrtcCreate (ScrnInfoPtr		scrn,
 	crtcs = malloc((xf86_config->num_crtc + 1) * sizeof (xf86CrtcPtr));
     if (!crtcs)
     {
+	free(crtc->gamma_red);
 	free(crtc);
 	return NULL;
     }


More information about the xorg-devel mailing list