summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyo Munakata <ryomnktml@gmail.com>2014-09-06 07:32:51 +0900
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2014-09-09 12:21:25 +0300
commit03faed2074794236d94e68aaf7c9d7c2ad5beafd (patch)
treeecdcd9f696987cc47cb35bfa0159962356348e5c
parentd8deff617a18aa71a0501a52569b2328706cf35a (diff)
downloadweston-03faed2074794236d94e68aaf7c9d7c2ad5beafd.tar.gz
main: don't leak option strings
[Pekka Paalanen: fix a long line] Signed-off-by: Ryo Munakata <ryomnktml@gmail.com> Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-rw-r--r--src/compositor.c42
1 files changed, 18 insertions, 24 deletions
diff --git a/src/compositor.c b/src/compositor.c
index fca052eb..c9871cb5 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,14 @@ int main(int argc, char *argv[])
}
section = weston_config_get_section(config, "core", NULL, NULL);
- if (option_backend)
- backend = strdup(option_backend);
- else
+ if (!backend) {
weston_config_section_get_string(section, "backend", &backend,
NULL);
-
- if (!backend)
- backend = weston_choose_default_backend();
+ 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 +4468,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 +4497,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 +4516,12 @@ out_signals:
weston_log_file_close();
+ free(backend);
+ free(shell);
+ free(socket_name);
+ free(option_modules);
+ free(log);
+ free(modules);
+
return ret;
}