2015-09-07 16:58 GMT+08:00 Emil Velikov <emil.l.veli...@gmail.com>: > From: Matt Turner <matts...@gmail.com> > > v2: [Emil Velikov] > Rework the error path to a common goto, close only if we own the fd. > > Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com>
Reviewed-by: Boyan Ding <boyan.j.d...@gmail.com> > --- > src/egl/drivers/dri2/platform_drm.c | 27 ++++++++++++++------------- > 1 file changed, 14 insertions(+), 13 deletions(-) > > diff --git a/src/egl/drivers/dri2/platform_drm.c > b/src/egl/drivers/dri2/platform_drm.c > index eda5087..e8fe7ea 100644 > --- a/src/egl/drivers/dri2/platform_drm.c > +++ b/src/egl/drivers/dri2/platform_drm.c > @@ -623,26 +623,20 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp) > dri2_dpy->own_device = 1; > gbm = gbm_create_device(fd); > if (gbm == NULL) > - return EGL_FALSE; > + goto cleanup; > } > > - if (strcmp(gbm_device_get_backend_name(gbm), "drm") != 0) { > - free(dri2_dpy); > - return EGL_FALSE; > - } > + if (strcmp(gbm_device_get_backend_name(gbm), "drm") != 0) > + goto cleanup; > > dri2_dpy->gbm_dri = gbm_dri_device(gbm); > - if (dri2_dpy->gbm_dri->base.type != GBM_DRM_DRIVER_TYPE_DRI) { > - free(dri2_dpy); > - return EGL_FALSE; > - } > + if (dri2_dpy->gbm_dri->base.type != GBM_DRM_DRIVER_TYPE_DRI) > + goto cleanup; > > if (fd < 0) { > fd = fcntl(gbm_device_get_fd(gbm), F_DUPFD_CLOEXEC, 3); > - if (fd < 0) { > - free(dri2_dpy); > - return EGL_FALSE; > - } > + if (fd < 0) > + goto cleanup; > } > > dri2_dpy->fd = fd; > @@ -727,4 +721,11 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp) > dri2_dpy->vtbl = &dri2_drm_display_vtbl; > > return EGL_TRUE; > + > +cleanup: > + if (dri2_dpy->own_device) > + close(fd); > + > + free(dri2_dpy); > + return EGL_FALSE; > } > -- > 2.5.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev