[PATCH] [GSOC] ref-filter: solve bugs caused by enumeration
From: ZheNing Hu via GitGitGadget <hidden>
Date: 2021-05-05 15:31:08
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: ZheNing Hu <redacted>
Johannes Schindelin seems to have introduced a bug in
cc72385f(for-each-ref: let upstream/push optionally
report the remote name), it use `atom->u.remote_ref.option`
which is a member of enumeration in the judgment statement.
When we use other members in the enumeration `used_atom.u`,
and it happened to fill in `remote_ref.push`, this judgment
may still be established and produces errors. So replace the
judgment statement with `starts_with(name, "push")` to fix
the error.
Signed-off-by: ZheNing Hu <redacted>
---
[GSOC] ref-filter: solve bugs caused by enumeration
This is the problem I found in the implementation of git for-each-ref
--format="%(notes)".
I added a new option to the enum used_atom.u , but the program seems to
output the value of "%(push)".
After research, it should be the problem of incorrect use of enumeration
values here.
Thanks, may the force be with you!
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-949%2Fadlternative%2Fref-filter-enum-bug-fix-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-949/adlternative/ref-filter-enum-bug-fix-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/949
ref-filter.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ref-filter.c b/ref-filter.c
index a0adb4551d87..f467f2fbbb73 100644
--- a/ref-filter.c
+++ b/ref-filter.c@@ -1730,7 +1730,7 @@ static int populate_value(struct ref_array_item *ref, struct strbuf *err) else v->s = xstrdup(""); continue; - } else if (atom->u.remote_ref.push) { + } else if (starts_with(name, "push")) { const char *branch_name; v->s = xstrdup(""); if (!skip_prefix(ref->refname, "refs/heads/",
base-commit: 311531c9de557d25ac087c1637818bd2aad6eb3a -- gitgitgadget