Make git_oid_tostr use out buffer for NULL oid

Previously a NULL oid was handled like an empty buffer and
returned a status empty string.  This makes git_oid_tostr()
set the output buffer to the empty string instead.
This commit is contained in:
Russell Belfer 2012-12-19 15:06:14 -08:00
parent 5cf9875a4f
commit 8fe713ccf7
2 changed files with 4 additions and 4 deletions

View File

@ -95,12 +95,12 @@ char *git_oid_tostr(char *out, size_t n, const git_oid *oid)
{ {
char str[GIT_OID_HEXSZ]; char str[GIT_OID_HEXSZ];
if (!out || n == 0 || !oid) if (!out || n == 0)
return ""; return "";
n--; /* allow room for terminating NUL */ n--; /* allow room for terminating NUL */
if (n > 0) { if (n > 0 && oid != NULL) {
git_oid_fmt(str, oid); git_oid_fmt(str, oid);
if (n > GIT_OID_HEXSZ) if (n > GIT_OID_HEXSZ)
n = GIT_OID_HEXSZ; n = GIT_OID_HEXSZ;

View File

@ -21,9 +21,9 @@ void test_object_raw_convert__succeed_on_oid_to_string_conversion(void)
str = git_oid_tostr(out, 0, &in); str = git_oid_tostr(out, 0, &in);
cl_assert(str && *str == '\0' && str != out); cl_assert(str && *str == '\0' && str != out);
/* NULL oid pointer, returns static empty string */ /* NULL oid pointer, sets existing buffer to empty string */
str = git_oid_tostr(out, sizeof(out), NULL); str = git_oid_tostr(out, sizeof(out), NULL);
cl_assert(str && *str == '\0' && str != out); cl_assert(str && *str == '\0' && str == out);
/* n == 1, returns out as an empty string */ /* n == 1, returns out as an empty string */
str = git_oid_tostr(out, 1, &in); str = git_oid_tostr(out, 1, &in);