diff options
| author | Russell Belfer <rb@github.com> | 2013-03-14 15:09:29 -0700 |
|---|---|---|
| committer | Russell Belfer <rb@github.com> | 2013-03-14 15:09:29 -0700 |
| commit | 55e0f53d8636f3402a698814e719cca9b9fa803a (patch) | |
| tree | 023a8255cebfdd2f2260ea320f01d38dab5e15ae /src/refs.c | |
| parent | 6950dca42ea15d2a766131464935a1c4d8bd11b2 (diff) | |
| download | libgit2-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.c | 19 |
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; |
