OSDN Git Service

glx: Fix leaks in DRISW screen creation error paths.
authorHenri Verbeet <hverbeet@gmail.com>
Sat, 29 Jan 2011 23:00:50 +0000 (15:00 -0800)
committerBrian Paul <brianp@vmware.com>
Mon, 31 Jan 2011 16:31:24 +0000 (09:31 -0700)
Signed-off-by: Brian Paul <brianp@vmware.com>
src/glx/drisw_glx.c

index 237ce17..5c7f40c 100644 (file)
@@ -452,8 +452,10 @@ driCreateScreen(int screen, struct glx_display *priv)
       return NULL;
 
    memset(psc, 0, sizeof *psc);
-   if (!glx_screen_init(&psc->base, screen, priv))
-       return NULL;
+   if (!glx_screen_init(&psc->base, screen, priv)) {
+      Xfree(psc);
+      return NULL;
+   }
 
    psc->driver = driOpenSwrast();
    if (psc->driver == NULL)
@@ -504,6 +506,7 @@ driCreateScreen(int screen, struct glx_display *priv)
  handle_error:
    if (psc->driver)
       dlclose(psc->driver);
+   glx_screen_cleanup(&psc->base);
    Xfree(psc);
 
    ErrorMessageF("reverting to indirect rendering\n");