diff --git a/builtin-for-each-ref.c b/builtin-for-each-ref.c
index e59bd8075e44a8de23503a8a59c5fdd2575a9243..e46b7adc9719e147536398e8e365d6d3e65a4ba7 100644 (file)
--- a/builtin-for-each-ref.c
+++ b/builtin-for-each-ref.c
@@ -320,9 +320,7 @@ static const char *find_wholine(const char *who, int wholen, const char *buf, un
static const char *copy_line(const char *buf)
{
- const char *eol = strchr(buf, '\n');
- if (!eol) // simulate strchrnul()
- eol = buf + strlen(buf);
+ const char *eol = strchrnul(buf, '\n');
return xmemdupz(buf, eol - buf);
}
for (j = 0; j < i; j++) {
const char *rule = ref_rev_parse_rules[j];
unsigned char short_objectname[20];
+ char refname[PATH_MAX];
/*
* the short name is ambiguous, if it resolves
* (with this previous rule) to a valid ref
* read_ref() returns 0 on success
*/
- if (!read_ref(mkpath(rule, short_name_len, short_name),
- short_objectname))
+ mksnpath(refname, sizeof(refname),
+ rule, short_name_len, short_name);
+ if (!read_ref(refname, short_objectname))
break;
}