From d091a9dbdeaa246b120feef60ce1940d7d22ea3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Thu, 10 Jul 2014 12:21:28 +0200 Subject: tree-cache: extract the allocation --- src/tree-cache.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'src/tree-cache.c') diff --git a/src/tree-cache.c b/src/tree-cache.c index 49afd6e49..aec94938d 100644 --- a/src/tree-cache.c +++ b/src/tree-cache.c @@ -74,7 +74,6 @@ static int read_tree_internal(git_tree_cache **out, git_tree_cache *tree = NULL; const char *name_start, *buffer; int count; - size_t name_len; buffer = name_start = *buffer_in; @@ -84,17 +83,8 @@ static int read_tree_internal(git_tree_cache **out, if (++buffer >= buffer_end) goto corrupted; - name_len = strlen(name_start); - tree = git__malloc(sizeof(git_tree_cache) + name_len + 1); - GITERR_CHECK_ALLOC(tree); - - memset(tree, 0x0, sizeof(git_tree_cache)); - tree->parent = parent; - - /* NUL-terminated tree name */ - tree->namelen = name_len; - memcpy(tree->name, name_start, name_len); - tree->name[name_len] = '\0'; + if (git_tree_cache_new(&tree, name_start, parent) < 0) + return -1; /* Blank-terminated ASCII decimal number of entries in this tree */ if (git__strtol32(&count, buffer, &buffer, 10) < 0) @@ -164,6 +154,26 @@ int git_tree_cache_read(git_tree_cache **tree, const char *buffer, size_t buffer return 0; } +int git_tree_cache_new(git_tree_cache **out, const char *name, git_tree_cache *parent) +{ + size_t name_len; + git_tree_cache *tree; + + name_len = strlen(name); + tree = git__malloc(sizeof(git_tree_cache) + name_len + 1); + GITERR_CHECK_ALLOC(tree); + + memset(tree, 0x0, sizeof(git_tree_cache)); + tree->parent = parent; + /* NUL-terminated tree name */ + tree->namelen = name_len; + memcpy(tree->name, name, name_len); + tree->name[name_len] = '\0'; + + *out = tree; + return 0; +} + void git_tree_cache_free(git_tree_cache *tree) { unsigned int i; -- cgit v1.2.1