summaryrefslogtreecommitdiff
path: root/src/refs.c
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-03-14 15:09:29 -0700
committerRussell Belfer <rb@github.com>2013-03-14 15:09:29 -0700
commit55e0f53d8636f3402a698814e719cca9b9fa803a (patch)
tree023a8255cebfdd2f2260ea320f01d38dab5e15ae /src/refs.c
parent6950dca42ea15d2a766131464935a1c4d8bd11b2 (diff)
downloadlibgit2-55e0f53d8636f3402a698814e719cca9b9fa803a.tar.gz
Fix various build warnings
This fixes various build warnings on Mac and Windows (64-bit).
Diffstat (limited to 'src/refs.c')
-rw-r--r--src/refs.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/refs.c b/src/refs.c
index 80307c96d..41c6fd838 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -39,10 +39,13 @@ git_reference *git_reference__alloc(
const char *symbolic)
{
git_reference *ref;
+ size_t namelen;
assert(refdb && name && ((oid && !symbolic) || (!oid && symbolic)));
-
- if ((ref = git__calloc(1, sizeof(git_reference) + strlen(name) + 1)) == NULL)
+
+ namelen = strlen(name);
+
+ if ((ref = git__calloc(1, sizeof(git_reference) + namelen + 1)) == NULL)
return NULL;
if (oid) {
@@ -51,13 +54,15 @@ git_reference *git_reference__alloc(
} else {
ref->type = GIT_REF_SYMBOLIC;
- if ((ref->target.symbolic = git__strdup(symbolic)) == NULL)
+ if ((ref->target.symbolic = git__strdup(symbolic)) == NULL) {
+ git__free(ref);
return NULL;
+ }
}
-
+
ref->db = refdb;
- strcpy(ref->name, name);
-
+ memcpy(ref->name, name, namelen + 1);
+
return ref;
}
@@ -70,7 +75,7 @@ void git_reference_free(git_reference *reference)
git__free(reference->target.symbolic);
reference->target.symbolic = NULL;
}
-
+
reference->db = NULL;
reference->type = GIT_REF_INVALID;