diff --git a/src/refs.c b/src/refs.c index 9e2311b07..740d99eda 100644 --- a/src/refs.c +++ b/src/refs.c @@ -211,8 +211,6 @@ static int loose_lookup(git_reference *ref) if (!updated) return 0; - git_buf_rtrim(&ref_file); - if (ref->flags & GIT_REF_SYMBOLIC) { git__free(ref->target.symbolic); ref->target.symbolic = NULL; @@ -222,6 +220,7 @@ static int loose_lookup(git_reference *ref) if (git__prefixcmp((const char *)(ref_file.ptr), GIT_SYMREF) == 0) { ref->flags |= GIT_REF_SYMBOLIC; + git_buf_rtrim(&ref_file); result = loose_parse_symbolic(ref, &ref_file); } else { ref->flags |= GIT_REF_OID; diff --git a/tests-clar/refs/read.c b/tests-clar/refs/read.c index fc2d6b902..c2647e2db 100644 --- a/tests-clar/refs/read.c +++ b/tests-clar/refs/read.c @@ -212,6 +212,7 @@ void test_refs_read__trailing(void) cl_git_pass(git_reference_lookup(&test, g_repo, "refs/heads/test")); cl_git_pass(git_reference_lookup(&trailing, g_repo, "refs/heads/trailing")); cl_git_pass(git_oid_cmp(git_reference_oid(test), git_reference_oid(trailing))); + git_reference_free(trailing); cl_git_pass(git_reference_lookup(&trailing, g_repo, "FETCH_HEAD")); git_reference_free(test);