Thanks.  I'm committing the patch with some fixes, namely replacing 
your colons with semicolons.

-Brian


Rodolfo Ribeiro Gomes wrote:
> Hello,
> 
> the function dri2CreateScreen() at src/glx/x11/dri2_glx.c (from
> MesaLib package 7.6.1 and 7.7 at least) has memory leak.
> It returns without free the __GLXDRIscreen *psp variable on errors.
> 
> A less intrusive modification is below. Maybe it would be better if
> the drivername and devicename had been free as soon as they become
> useless.
> 
> *** dri2_glx.c  2010-01-25 10:28:35.000000000 -0200
> --- dri2_glx-modified.c 2010-01-25 10:33:21.000000000 -0200
> ***************
> *** 438,444 ****
> --- 438,447 ----
> 
>     if (!DRI2Connect(psc->dpy, RootWindow(psc->dpy, screen),
>                      &driverName, &deviceName))
> +    {
> +       XFree(psp):
>        return NULL;
> +    }
> 
>     psc->driver = driOpenDriver(driverName);
>     if (psc->driver == NULL) {
> ***************
> *** 467,483 ****
>     psc->fd = open(deviceName, O_RDWR);
>     if (psc->fd < 0) {
>        ErrorMessageF("failed to open drm device: %s\n", strerror(errno));
> !       return NULL;
>     }
> 
>     if (drmGetMagic(psc->fd, &magic)) {
>        ErrorMessageF("failed to get magic\n");
> !       return NULL;
>     }
> 
>     if (!DRI2Authenticate(psc->dpy, RootWindow(psc->dpy, screen), magic)) {
>        ErrorMessageF("failed to authenticate magic %d\n", magic);
> !       return NULL;
>     }
> 
>     /* If the server does not support the protocol for
> --- 470,486 ----
>     psc->fd = open(deviceName, O_RDWR);
>     if (psc->fd < 0) {
>        ErrorMessageF("failed to open drm device: %s\n", strerror(errno));
> !       goto handle_error;
>     }
> 
>     if (drmGetMagic(psc->fd, &magic)) {
>        ErrorMessageF("failed to get magic\n");
> !       goto handle_error;
>     }
> 
>     if (!DRI2Authenticate(psc->dpy, RootWindow(psc->dpy, screen), magic)) {
>        ErrorMessageF("failed to authenticate magic %d\n", magic);
> !       goto handle_error;
>     }
> 
>     /* If the server does not support the protocol for
> ***************
> *** 491,497 ****
> 
>     if (psc->__driScreen == NULL) {
>        ErrorMessageF("failed to create dri screen\n");
> !       return NULL;
>     }
> 
>     driBindExtensions(psc, 1);
> --- 494,500 ----
> 
>     if (psc->__driScreen == NULL) {
>        ErrorMessageF("failed to create dri screen\n");
> !       goto handle_error;
>     }
> 
>     driBindExtensions(psc, 1);
> ***************
> *** 521,526 ****
> --- 524,532 ----
>   handle_error:
>     Xfree(driverName);
>     Xfree(deviceName);
> +
> +    XFree(psp):
> +
> 
>     /* FIXME: clean up here */
> 
> 
> ------------------------------------------------------------------------------
> The Planet: dedicated and managed hosting, cloud storage, colocation
> Stay online with enterprise data centers and the best network in the business
> Choose flexible plans and management services without long-term contracts
> Personal 24x7 support from experience hosting pros just a phone call away.
> http://p.sf.net/sfu/theplanet-com
> _______________________________________________
> Mesa3d-dev mailing list
> Mesa3d-dev@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mesa3d-dev
> .
> 


------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to