drm: Fix drmModeRes leak on error paths

When creating outputs in the drm compositor, if allocating crtcs
fails, then free the drm resources. Also, if the base output list is
empty, free drm resources
This commit is contained in:
Christopher Michael
2012-03-07 14:55:21 -05:00
committed by Kristian Høgsberg
parent 0eee939d76
commit eb866cd9fe
+4 -1
View File
@@ -1263,8 +1263,10 @@ create_outputs(struct drm_compositor *ec, int option_connector,
} }
ec->crtcs = calloc(resources->count_crtcs, sizeof(uint32_t)); ec->crtcs = calloc(resources->count_crtcs, sizeof(uint32_t));
if (!ec->crtcs) if (!ec->crtcs) {
drmModeFreeResources(resources);
return -1; return -1;
}
ec->num_crtcs = resources->count_crtcs; ec->num_crtcs = resources->count_crtcs;
memcpy(ec->crtcs, resources->crtcs, sizeof(uint32_t) * ec->num_crtcs); memcpy(ec->crtcs, resources->crtcs, sizeof(uint32_t) * ec->num_crtcs);
@@ -1295,6 +1297,7 @@ create_outputs(struct drm_compositor *ec, int option_connector,
if (wl_list_empty(&ec->base.output_list)) { if (wl_list_empty(&ec->base.output_list)) {
fprintf(stderr, "No currently active connector found.\n"); fprintf(stderr, "No currently active connector found.\n");
drmModeFreeResources(resources);
return -1; return -1;
} }