vendor/libgit2/src/signature.c in rugged-0.25.0b2 vs vendor/libgit2/src/signature.c in rugged-0.25.0b3

- old
+ new

@@ -198,11 +198,12 @@ const char *buffer = *buffer_out; const char *email_start, *email_end; memset(sig, 0, sizeof(git_signature)); - if ((buffer_end = memchr(buffer, ender, buffer_end - buffer)) == NULL) + if (ender && + (buffer_end = memchr(buffer, ender, buffer_end - buffer)) == NULL) return signature_error("no newline given"); if (header) { const size_t header_len = strlen(header); @@ -258,9 +259,33 @@ } } *buffer_out = buffer_end + 1; return 0; +} + +int git_signature_from_buffer(git_signature **out, const char *buf) +{ + git_signature *sig; + const char *buf_end; + int error; + + assert(out && buf); + + *out = NULL; + + sig = git__calloc(1, sizeof(git_signature)); + GITERR_CHECK_ALLOC(sig); + + buf_end = buf + strlen(buf); + error = git_signature__parse(sig, &buf, buf_end, NULL, '\0'); + + if (error) + git__free(sig); + else + *out = sig; + + return error; } void git_signature__writebuf(git_buf *buf, const char *header, const git_signature *sig) { int offset, hours, mins;