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;
                }