From 5375384545e4640acc342577798d30f632f5fc60 Mon Sep 17 00:00:00 2001 From: Benoit Gschwind Date: Tue, 10 May 2016 22:47:57 +0200 Subject: main: let load_wayland_backend() clean up on error weston_wayland_backend_config_release() does not bother reinitializing the structure, it simply frees what is there. This leads to a structure containing garbage, which might be a surprise. Require, that if load_wayland_backend_config() fails, the caller must call weston_wayland_backend_config_release() regardless. Signed-off-by: Benoit Gschwind Reviewed-by: Quentin Glidic [Pekka: rewrote commit message] Signed-off-by: Pekka Paalanen --- src/main.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/main.c b/src/main.c index 2b119b63..3279ac6a 100644 --- a/src/main.c +++ b/src/main.c @@ -1170,7 +1170,7 @@ load_wayland_backend_config(struct weston_compositor *compositor, int *argc, if (config->fullscreen) { oc = weston_wayland_backend_config_add_new_output(config); if (!oc) - goto err_outputs; + return -1; oc->width = width; oc->height = height; @@ -1197,7 +1197,7 @@ load_wayland_backend_config(struct weston_compositor *compositor, int *argc, oc = weston_wayland_backend_config_add_new_output(config); if (!oc) - goto err_outputs; + return -1; weston_wayland_output_config_init(oc, section, width, height, scale); @@ -1214,7 +1214,7 @@ load_wayland_backend_config(struct weston_compositor *compositor, int *argc, while (count > 0) { oc = weston_wayland_backend_config_add_new_output(config); if (!oc) - goto err_outputs; + return -1; oc->width = width; oc->height = height; @@ -1226,10 +1226,6 @@ load_wayland_backend_config(struct weston_compositor *compositor, int *argc, } return 0; - -err_outputs: - weston_wayland_backend_config_release(config); - return -1; } static int @@ -1241,6 +1237,7 @@ load_wayland_backend(struct weston_compositor *c, char const * backend, ret = load_wayland_backend_config(c, argc, argv, wc, &config); if(ret < 0) { + weston_wayland_backend_config_release(&config); return ret; } -- cgit v1.2.1