summaryrefslogtreecommitdiff
path: root/src/signature.c
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2013-05-15 17:51:57 +0200
committerVicent Marti <tanoku@gmail.com>2013-05-15 17:51:57 +0200
commitf0ab73720a4e7a9b37c901a27519ea65eafeb8a6 (patch)
tree910417e244e6365f27ede2fd965f8b25a5fda1c4 /src/signature.c
parent86c6f74a79ef61582b636d478a9852ae54d87e2e (diff)
downloadlibgit2-f0ab73720a4e7a9b37c901a27519ea65eafeb8a6.tar.gz
signature: Lenient when dupping, strict when creating
Diffstat (limited to 'src/signature.c')
-rw-r--r--src/signature.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/signature.c b/src/signature.c
index 649dbcd3d..48bdd81ab 100644
--- a/src/signature.c
+++ b/src/signature.c
@@ -66,10 +66,12 @@ int git_signature_new(git_signature **sig_out, const char *name, const char *ema
p->name = extract_trimmed(name, strlen(name));
p->email = extract_trimmed(email, strlen(email));
- if (p->name == NULL || p->email == NULL ||
- p->name[0] == '\0' || p->email[0] == '\0') {
+ if (p->name == NULL || p->email == NULL)
+ return -1; /* oom */
+
+ if (p->name[0] == '\0') {
git_signature_free(p);
- return signature_error("Empty name or email");
+ return signature_error("Signature cannot have an empty name");
}
p->when.time = time;
@@ -81,9 +83,16 @@ int git_signature_new(git_signature **sig_out, const char *name, const char *ema
git_signature *git_signature_dup(const git_signature *sig)
{
- git_signature *new;
- if (git_signature_new(&new, sig->name, sig->email, sig->when.time, sig->when.offset) < 0)
+ git_signature *new = git__calloc(1, sizeof(git_signature));
+
+ if (new == NULL)
return NULL;
+
+ new->name = git__strdup(sig->name);
+ new->email = git__strdup(sig->email);
+ new->when.time = sig->when.time;
+ new->when.offset = sig->when.offset;
+
return new;
}