egl/x11: Fix driver_name acquisition
authorBoyan Ding <boyan.j.ding@gmail.com>
Sat, 8 Aug 2015 09:23:28 +0000 (17:23 +0800)
committerEmil Velikov <emil.l.velikov@gmail.com>
Sat, 8 Aug 2015 12:36:17 +0000 (13:36 +0100)
We don't need to free driverName string from dri2 reply, on the other
hand, the driver name acquired from loader doesn't need duplication.

Fixes: 45e110bad9d (egl/x11: trust our loader over the xserver for the
drivername)

Reported-by: Timothy Arceri <t_arceri@yahoo.com.au>
Signed-off-by: Boyan Ding <boyan.j.ding@gmail.com>
[Emil Velikov: use brackets for both branches of conditional]
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
src/egl/drivers/dri2/platform_x11.c

index 61e5b77ac785b650abe6e398420280706c4a60cc..9b040f7d491c10272e76a7e2d46b990629b27a25 100644 (file)
@@ -602,14 +602,13 @@ dri2_x11_connect(struct dri2_egl_display *dri2_dpy)
     */
    loader_driver_name = loader_get_driver_for_fd(dri2_dpy->fd, 0);
    if (loader_driver_name) {
-      free(driver_name);
-      driver_name = loader_driver_name;
+      dri2_dpy->driver_name = loader_driver_name;
+   } else {
+      dri2_dpy->driver_name =
+         strndup(driver_name,
+                 xcb_dri2_connect_driver_name_length(connect));
    }
 
-   dri2_dpy->driver_name =
-      strndup(driver_name,
-              xcb_dri2_connect_driver_name_length(connect));
-
    if (dri2_dpy->device_name == NULL || dri2_dpy->driver_name == NULL) {
       close(dri2_dpy->fd);
       free(dri2_dpy->device_name);