diff options
| author | Jeff King <peff@peff.net> | 2014-06-10 17:36:52 -0400 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2014-06-12 10:29:41 -0700 | 
| commit | 3ffefb54c0515308ceafb6ba071567d9fd379498 (patch) | |
| tree | bc4051d445ad039b8e1df96c08c7641d711de22c /commit.c | |
| parent | bce14aa132e0064d9a9b1c7ad98e71e22c6e0272 (diff) | |
| download | git-3ffefb54c0515308ceafb6ba071567d9fd379498.tar.gz | |
commit_tree: take a pointer/len pair rather than a const strbuf
While strbufs are pretty common throughout our code, it is
more flexible for functions to take a pointer/len pair than
a strbuf. It's easy to turn a strbuf into such a pair (by
dereferencing its members), but less easy to go the other
way (you can strbuf_attach, but that has implications about
memory ownership).
This patch teaches commit_tree (and its associated callers
and sub-functions) to take such a pair for the commit
message rather than a strbuf.  This makes passing the buffer
around slightly more verbose, but means we can get rid of
some dangerous strbuf_attach calls in the next patch.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'commit.c')
| -rw-r--r-- | commit.c | 12 | 
1 files changed, 7 insertions, 5 deletions
| @@ -1344,7 +1344,8 @@ void free_commit_extra_headers(struct commit_extra_header *extra)  	}  } -int commit_tree(const struct strbuf *msg, const unsigned char *tree, +int commit_tree(const char *msg, size_t msg_len, +		const unsigned char *tree,  		struct commit_list *parents, unsigned char *ret,  		const char *author, const char *sign_commit)  { @@ -1352,7 +1353,7 @@ int commit_tree(const struct strbuf *msg, const unsigned char *tree,  	int result;  	append_merge_tag_headers(parents, &tail); -	result = commit_tree_extended(msg, tree, parents, ret, +	result = commit_tree_extended(msg, msg_len, tree, parents, ret,  				      author, sign_commit, extra);  	free_commit_extra_headers(extra);  	return result; @@ -1473,7 +1474,8 @@ static const char commit_utf8_warn[] =  "You may want to amend it after fixing the message, or set the config\n"  "variable i18n.commitencoding to the encoding your project uses.\n"; -int commit_tree_extended(const struct strbuf *msg, const unsigned char *tree, +int commit_tree_extended(const char *msg, size_t msg_len, +			 const unsigned char *tree,  			 struct commit_list *parents, unsigned char *ret,  			 const char *author, const char *sign_commit,  			 struct commit_extra_header *extra) @@ -1484,7 +1486,7 @@ int commit_tree_extended(const struct strbuf *msg, const unsigned char *tree,  	assert_sha1_type(tree, OBJ_TREE); -	if (memchr(msg->buf, '\0', msg->len)) +	if (memchr(msg, '\0', msg_len))  		return error("a NUL byte in commit log message not allowed.");  	/* Not having i18n.commitencoding is the same as having utf-8 */ @@ -1523,7 +1525,7 @@ int commit_tree_extended(const struct strbuf *msg, const unsigned char *tree,  	strbuf_addch(&buffer, '\n');  	/* And add the comment */ -	strbuf_addbuf(&buffer, msg); +	strbuf_add(&buffer, msg, msg_len);  	/* And check the encoding */  	if (encoding_is_utf8 && !verify_utf8(&buffer)) | 
