main: don't leak option strings
authorRyo Munakata <ryomnktml@gmail.com>
Fri, 5 Sep 2014 22:32:51 +0000 (07:32 +0900)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Tue, 9 Sep 2014 09:21:25 +0000 (12:21 +0300)
[Pekka Paalanen: fix a long line]

Signed-off-by: Ryo Munakata <ryomnktml@gmail.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
src/compositor.c

index fca052e..c9871cb 100644 (file)
@@ -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;
 }