[PATCH weston 2/2] main: don't leak option strings

Pekka Paalanen ppaalanen at gmail.com
Tue Sep 9 02:25:35 PDT 2014


On Sat,  6 Sep 2014 07:32:51 +0900
Ryo Munakata <ryomnktml at gmail.com> wrote:

> Signed-off-by: Ryo Munakata <ryomnktml at gmail.com>

Hi,

here the commit message could have listed which leaks it removes
exactly.

> ---
>  src/compositor.c | 45 +++++++++++++++++++--------------------------
>  1 file changed, 19 insertions(+), 26 deletions(-)
> 
> diff --git a/src/compositor.c b/src/compositor.c
> index 0ecae23..de58c59 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -4328,15 +4328,13 @@ int main(int argc, char *argv[])
>  				 struct weston_config *config);
>  	int i, fd;
>  	char *backend = NULL;
> -	char *option_backend = NULL;
>  	char *shell = NULL;
> -	char *option_shell = NULL;
>  	char *modules, *option_modules = NULL;
>  	char *log = NULL;
>  	char *server_socket = NULL, *end;
>  	int32_t idle_time = 300;
>  	int32_t help = 0;
> -	const char *socket_name = NULL;
> +	char *socket_name = NULL;
>  	int32_t version = 0;
>  	int32_t noconfig = 0;
>  	int32_t numlock_on;
> @@ -4347,8 +4345,8 @@ int main(int argc, char *argv[])
>  	struct weston_seat *seat;
>  
>  	const struct weston_option core_options[] = {
> -		{ WESTON_OPTION_STRING, "backend", 'B', &option_backend },
> -		{ WESTON_OPTION_STRING, "shell", 0, &option_shell },
> +		{ WESTON_OPTION_STRING, "backend", 'B', &backend },
> +		{ WESTON_OPTION_STRING, "shell", 0, &shell },
>  		{ WESTON_OPTION_STRING, "socket", 'S', &socket_name },
>  		{ WESTON_OPTION_INTEGER, "idle-time", 'i', &idle_time },
>  		{ WESTON_OPTION_STRING, "modules", 0, &option_modules },
> @@ -4409,17 +4407,13 @@ int main(int argc, char *argv[])
>  	}
>  	section = weston_config_get_section(config, "core", NULL, NULL);
>  
> -	if (option_backend)
> -		backend = strdup(option_backend);
> -	else
> -		weston_config_section_get_string(section, "backend", &backend,
> -						 NULL);
> -
> -	if (!backend)
> -		backend = weston_choose_default_backend();
> +	if (!backend) {
> +		weston_config_section_get_string(section, "backend", &backend, NULL);

An over-long line that I fixed when applying the patch.

> +		if (!backend)
> +			backend = weston_choose_default_backend();
> +	}
>  
>  	backend_init = weston_load_module(backend, "backend_init");
> -	free(backend);
>  	if (!backend_init) {
>  		ret = EXIT_FAILURE;
>  		goto out_signals;
> @@ -4473,24 +4467,16 @@ int main(int argc, char *argv[])
>  		goto out;
>  	}
>  
> -	if (option_shell)
> -		shell = strdup(option_shell);
> -	else
> +	if (!shell)
>  		weston_config_section_get_string(section, "shell", &shell,
>  						 "desktop-shell.so");
>  
> -	if (load_modules(ec, shell, &argc, argv) < 0) {
> -		free(shell);
> +	if (load_modules(ec, shell, &argc, argv) < 0)
>  		goto out;
> -	}
> -	free(shell);
>  
>  	weston_config_section_get_string(section, "modules", &modules, "");
> -	if (load_modules(ec, modules, &argc, argv) < 0) {
> -		free(modules);
> +	if (load_modules(ec, modules, &argc, argv) < 0)
>  		goto out;
> -	}
> -	free(modules);
>  
>  	if (load_modules(ec, option_modules, &argc, argv) < 0)
>  		goto out;
> @@ -4510,7 +4496,7 @@ int main(int argc, char *argv[])
>  
>  	wl_display_run(display);
>  
> - out:
> +out:
>  	/* prevent further rendering while shutting down */
>  	ec->state = WESTON_COMPOSITOR_OFFSCREEN;
>  
> @@ -4529,5 +4515,12 @@ out_signals:
>  
>  	weston_log_file_close();
>  
> +	free(backend);
> +	free(shell);
> +	free(socket_name);
> +	free(option_modules);
> +	free(log);
> +	free(modules);
> +
>  	return ret;
>  }

Pushed anyway.


Thanks,
pq


More information about the wayland-devel mailing list