OSDN Git Service

is_refname_available(): convert local variable "dirname" to strbuf
authorMichael Haggerty <mhagger@alum.mit.edu>
Mon, 11 May 2015 15:25:06 +0000 (17:25 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 11 May 2015 18:50:17 +0000 (11:50 -0700)
This change wouldn't be worth it by itself, but in a moment we will
use the strbuf for more string juggling.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
refs.c

diff --git a/refs.c b/refs.c
index 9d87e84..faabd68 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -887,9 +887,8 @@ static int is_refname_available(const char *refname,
                                struct ref_dir *dir)
 {
        const char *slash;
-       size_t len;
        int pos;
-       char *dirname;
+       struct strbuf dirname = STRBUF_INIT;
 
        /*
         * For the sake of comments in this function, suppose that
@@ -955,11 +954,10 @@ static int is_refname_available(const char *refname,
         * names are in the "refs/foo/bar/" namespace, because they
         * *do* conflict.
         */
-       len = strlen(refname);
-       dirname = xmallocz(len + 1);
-       sprintf(dirname, "%s/", refname);
-       pos = search_ref_dir(dir, dirname, len + 1);
-       free(dirname);
+       strbuf_addstr(&dirname, refname);
+       strbuf_addch(&dirname, '/');
+       pos = search_ref_dir(dir, dirname.buf, dirname.len);
+       strbuf_release(&dirname);
 
        if (pos >= 0) {
                /*