From: Lennart Poettering Date: Wed, 14 Jan 2015 22:16:28 +0000 (+0100) Subject: loginctl: fix misuse compound literals X-Git-Tag: v219~503 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=2fbcde7402a26d365b6a8091b912154e6d187ee4;hp=c7fbd99660363b74ccb3c75d280c158518bc78b3 loginctl: fix misuse compound literals The lifetime of compound literals is bound to the local scope, we hence cannot refernce them outside of it. --- diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 064411ea8..b0eede9a3 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -846,6 +846,7 @@ static int show_seat(int argc, char *argv[], void *userdata) { static int activate(int argc, char *argv[], void *userdata) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; sd_bus *bus = userdata; + char *short_argv[3]; int r, i; assert(bus); @@ -858,7 +859,11 @@ static int activate(int argc, char *argv[], void *userdata) { * session name, which the calls will then resolve to * the caller's session. */ - argv = STRV_MAKE(argv[0], ""); + short_argv[0] = argv[0]; + short_argv[1] = (char*) ""; + short_argv[2] = NULL; + + argv = short_argv; argc = 2; } @@ -919,6 +924,7 @@ static int kill_session(int argc, char *argv[], void *userdata) { static int enable_linger(int argc, char *argv[], void *userdata) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; sd_bus *bus = userdata; + char* short_argv[3]; bool b; int r, i; @@ -930,7 +936,10 @@ static int enable_linger(int argc, char *argv[], void *userdata) { b = streq(argv[0], "enable-linger"); if (argc < 2) { - argv = STRV_MAKE(argv[0], ""); + short_argv[0] = argv[0]; + short_argv[1] = (char*) ""; + short_argv[2] = NULL; + argv = short_argv; argc = 2; }