On Wed, Dec 14, 2011 at 20:43:11 +0900, Kusanagi Kouichi wrote: > Signed-off-by: Kusanagi Kouichi <[email protected]> > Reviewed-by: Ian Romanick <[email protected]> > --- > glx/glxdri2.c | 13 +++++++------ > 1 files changed, 7 insertions(+), 6 deletions(-) > > diff --git a/glx/glxdri2.c b/glx/glxdri2.c > index 8187a3e..b2174f5 100644 > --- a/glx/glxdri2.c > +++ b/glx/glxdri2.c > @@ -693,28 +693,29 @@ initializeExtensions(__GLXDRIscreen *screen) > static __GLXscreen * > __glXDRIscreenProbe(ScreenPtr pScreen) > { > + int fd; > const char *driverName, *deviceName; > __GLXDRIscreen *screen; > size_t buffer_size; > ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; > > - screen = calloc(1, sizeof *screen); > - if (screen == NULL) > - return NULL; > - > if (!xf86LoaderCheckSymbol("DRI2Connect") || > - !DRI2Connect(pScreen, DRI2DriverDRI, > - &screen->fd, &driverName, &deviceName)) { > + !DRI2Connect(pScreen, DRI2DriverDRI, &fd, &driverName, &deviceName)) { > LogMessage(X_INFO, > "AIGLX: Screen %d is not DRI2 capable\n", pScreen->myNum); > return NULL; > } > > + screen = calloc(1, sizeof *screen); > + if (screen == NULL) > + return NULL; > +
seems like you're trading a memory leak for a fd leak? Cheers, Julien > screen->base.destroy = __glXDRIscreenDestroy; > screen->base.createContext = __glXDRIscreenCreateContext; > screen->base.createDrawable = __glXDRIscreenCreateDrawable; > screen->base.swapInterval = __glXDRIdrawableSwapInterval; > screen->base.pScreen = pScreen; > + screen->fd = fd; > > __glXInitExtensionEnableBits(screen->glx_enable_bits); > > -- > 1.7.7.3 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
