admin-switch: Don't segfault if there's no remote

Switching between local branches should be supported too.

Signed-off-by: Anton Gerasimov <anton@advancedtelematic.com>

Closes: #683
Approved by: cgwalters
This commit is contained in:
Anton Gerasimov 2017-02-13 17:34:18 +01:00 committed by Atomic Bot
parent e6a8979e05
commit b8f4465b50
1 changed files with 10 additions and 4 deletions

View File

@ -53,6 +53,7 @@ ot_admin_builtin_switch (int argc, char **argv, GCancellable *cancellable, GErro
g_autofree char *new_remote = NULL; g_autofree char *new_remote = NULL;
g_autofree char *new_ref = NULL; g_autofree char *new_ref = NULL;
g_autofree char *new_refspec = NULL; g_autofree char *new_refspec = NULL;
const char* remote;
glnx_unref_object OstreeSysrootUpgrader *upgrader = NULL; glnx_unref_object OstreeSysrootUpgrader *upgrader = NULL;
glnx_unref_object OstreeAsyncProgress *progress = NULL; glnx_unref_object OstreeAsyncProgress *progress = NULL;
gboolean changed; gboolean changed;
@ -101,12 +102,17 @@ ot_admin_builtin_switch (int argc, char **argv, GCancellable *cancellable, GErro
if (!ostree_parse_refspec (new_provided_refspec, &new_remote, &new_ref, error)) if (!ostree_parse_refspec (new_provided_refspec, &new_remote, &new_ref, error))
goto out; goto out;
} }
if (!new_remote) if (!new_remote)
new_refspec = g_strconcat (origin_remote, ":", new_ref, NULL); remote = origin_remote;
else else
new_refspec = g_strconcat (new_remote, ":", new_ref, NULL); remote = new_remote;
if (remote)
new_refspec = g_strconcat (remote, ":", new_ref, NULL);
else
new_refspec = g_strdup (new_ref);
if (strcmp (origin_refspec, new_refspec) == 0) if (strcmp (origin_refspec, new_refspec) == 0)
{ {
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,