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