From 530043fcf6444f5751caa2c478d9411ab78e1698 Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Wed, 28 Feb 2018 17:30:18 +0000 Subject: [PATCH] lib/sysroot: Fix retrieving non-booted pending deployment If we're booted into a deployment, then any queries for the pending merge deployment of a non-booted OS will fail due all of them being considered rollback. Fix this by filtering by `osname` *before* determining if we've crossed the booted deployment yet. Closes: #1472 Approved by: cgwalters --- src/libostree/ostree-sysroot.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libostree/ostree-sysroot.c b/src/libostree/ostree-sysroot.c index 2c12b78b..2d12deb6 100644 --- a/src/libostree/ostree-sysroot.c +++ b/src/libostree/ostree-sysroot.c @@ -1202,6 +1202,10 @@ ostree_sysroot_query_deployments_for (OstreeSysroot *self, { OstreeDeployment *deployment = self->deployments->pdata[i]; + /* Ignore deployments not for this osname */ + if (strcmp (ostree_deployment_get_osname (deployment), osname) != 0) + continue; + /* Is this deployment booted? If so, note we're past the booted */ if (self->booted_deployment != NULL && ostree_deployment_equal (deployment, self->booted_deployment)) @@ -1210,10 +1214,6 @@ ostree_sysroot_query_deployments_for (OstreeSysroot *self, continue; } - /* Ignore deployments not for this osname */ - if (strcmp (ostree_deployment_get_osname (deployment), osname) != 0) - continue; - if (!found_booted && !ret_pending) ret_pending = g_object_ref (deployment); else if (found_booted && !ret_rollback)