From 40ad937d47d6649a022f12f463ee39e83b1d9663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Scharfe?= Date: Tue, 22 May 2012 20:50:39 +0200 Subject: refs: convert parameter of search_ref_dir() to length-limited string Signed-off-by: Rene Scharfe Signed-off-by: Junio C Hamano --- refs.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'refs.c') diff --git a/refs.c b/refs.c index d6bdb47ad6..c028333869 100644 --- a/refs.c +++ b/refs.c @@ -319,19 +319,19 @@ static void sort_ref_dir(struct ref_dir *dir); * (non-recursively), sorting dir if necessary. Return NULL if no * such entry is found. dir must already be complete. */ -static struct ref_entry *search_ref_dir(struct ref_dir *dir, const char *refname) +static struct ref_entry *search_ref_dir(struct ref_dir *dir, + const char *refname, size_t len) { struct ref_entry *e, **r; - int len; if (refname == NULL || !dir->nr) return NULL; sort_ref_dir(dir); - len = strlen(refname) + 1; - e = xmalloc(sizeof(struct ref_entry) + len); + e = xmalloc(sizeof(struct ref_entry) + len + 1); memcpy(e->name, refname, len); + e->name[len] = '\0'; r = bsearch(&e, dir->entries, dir->nr, sizeof(*dir->entries), ref_entry_cmp); @@ -353,7 +353,8 @@ static struct ref_entry *search_ref_dir(struct ref_dir *dir, const char *refname static struct ref_dir *search_for_subdir(struct ref_dir *dir, const char *subdirname, int mkdir) { - struct ref_entry *entry = search_ref_dir(dir, subdirname); + size_t len = strlen(subdirname); + struct ref_entry *entry = search_ref_dir(dir, subdirname, len); if (!entry) { if (!mkdir) return NULL; @@ -412,7 +413,7 @@ static struct ref_entry *find_ref(struct ref_dir *dir, const char *refname) dir = find_containing_dir(dir, refname, 0); if (!dir) return NULL; - entry = search_ref_dir(dir, refname); + entry = search_ref_dir(dir, refname, strlen(refname)); return (entry && !(entry->flag & REF_DIR)) ? entry : NULL; } -- cgit v1.2.3