gbm/dri: fix memory leaks in error path

Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
[Emil Velikov: make sure it builds]
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
Eric Engestrom 2017-01-27 17:29:05 +00:00 committed by Emil Velikov
parent 1d104f9aa7
commit 5f301fe2e6

View file

@ -695,6 +695,7 @@ gbm_dri_bo_import(struct gbm_device *gbm,
gbm_format = GBM_FORMAT_YUYV; gbm_format = GBM_FORMAT_YUYV;
break; break;
default: default:
dri->image->destroyImage(image);
return NULL; return NULL;
} }
break; break;
@ -715,6 +716,7 @@ gbm_dri_bo_import(struct gbm_device *gbm,
gbm_format = gbm_dri_to_gbm_format(dri_format); gbm_format = gbm_dri_to_gbm_format(dri_format);
if (gbm_format == 0) { if (gbm_format == 0) {
errno = EINVAL; errno = EINVAL;
dri->image->destroyImage(image);
return NULL; return NULL;
} }
break; break;
@ -759,8 +761,10 @@ gbm_dri_bo_import(struct gbm_device *gbm,
bo = calloc(1, sizeof *bo); bo = calloc(1, sizeof *bo);
if (bo == NULL) if (bo == NULL) {
dri->image->destroyImage(image);
return NULL; return NULL;
}
bo->image = image; bo->image = image;
@ -771,6 +775,7 @@ gbm_dri_bo_import(struct gbm_device *gbm,
if (dri->image->base.version >= 2 && if (dri->image->base.version >= 2 &&
!dri->image->validateUsage(bo->image, dri_use)) { !dri->image->validateUsage(bo->image, dri_use)) {
errno = EINVAL; errno = EINVAL;
dri->image->destroyImage(bo->image);
free(bo); free(bo);
return NULL; return NULL;
} }