From 4441cf330b3847d6c553fb230e8e4c86aa75ebb9 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Wed, 19 Jun 2024 18:45:14 +0200 Subject: [PATCH] shared/install: correctly report changes in install_info_symlink_alias() Follow-up for b2751cf0394d36c24590b5f7b33e9f864b57ba0d Also make the conditions consistent for install_info_symlink_wants(). Fixes #33411 --- src/shared/install.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/shared/install.c b/src/shared/install.c index 639372ae5bc..ca8e7d2733f 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1986,7 +1986,9 @@ static int install_info_symlink_alias( } broken = r == 0; /* symlink target does not exist? */ - RET_GATHER(ret, create_symlink(lp, alias_target ?: info->path, alias_path, force || broken, changes, n_changes)); + r = create_symlink(lp, alias_target ?: info->path, alias_path, force || broken, changes, n_changes); + if (r != 0 && ret >= 0) + ret = r; } return ret; @@ -2080,7 +2082,7 @@ static int install_info_symlink_wants( return -ENOMEM; q = create_symlink(lp, info->path, path, /* force = */ true, changes, n_changes); - if ((q < 0 && r >= 0) || r == 0) + if (q != 0 && r >= 0) r = q; if (unit_file_exists(scope, lp, dst) == 0) {