git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/4] Improve message-id generation flow control for format-patch

From
Daniel Barkalow <barkalow@iabervon.org>
Date
Feb 18, 2008, 17:43 UTC
Message-ID
<alpine.LNX.1.00.0802181229340.5816@iabervon.org>
In-Reply-To
<alpine.LSU.1.00.0802181238280.30505@racer.site>
On Mon, 18 Feb 2008, Johannes Schindelin wrote:
Show 49 quoted lines
> Hi,
> 
> On Sun, 17 Feb 2008, Daniel Barkalow wrote:
> 
> > diff --git a/builtin-log.c b/builtin-log.c
> > index 99d69f0..867cc13 100644
> > --- a/builtin-log.c
> > +++ b/builtin-log.c
> > @@ -575,16 +575,19 @@ static void get_patch_ids(struct rev_info *rev, struct patch_ids *ids, const cha
> >  	o2->flags = flags2;
> >  }
> >  
> > -static void gen_message_id(char *dest, unsigned int length, char *base)
> > +static void gen_message_id(struct rev_info *info, char *base)
> >  {
> >  	const char *committer = git_committer_info(IDENT_WARN_ON_NO_NAME);
> >  	const char *email_start = strrchr(committer, '<');
> >  	const char *email_end = strrchr(committer, '>');
> > -	if(!email_start || !email_end || email_start > email_end - 1)
> > +	struct strbuf buf;
> > +	if (!email_start || !email_end || email_start > email_end - 1)
> >  		die("Could not extract email from committer identity.");
> > -	snprintf(dest, length, "%s.%lu.git.%.*s", base,
> > -		 (unsigned long) time(NULL),
> > -		 (int)(email_end - email_start - 1), email_start + 1);
> > +	strbuf_init(&buf, 0);
> > +	strbuf_addf(&buf, "%s.%lu.git.%.*s", base,
> > +		    (unsigned long) time(NULL),
> > +		    (int)(email_end - email_start - 1), email_start + 1);
> > +	info->message_id = strbuf_detach(&buf, NULL);
> 
> With this last line, and...
> 
> > @@ -809,15 +810,13 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
> >  		rev.nr = total - nr + (start_number - 1);
> >  		/* Make the second and subsequent mails replies to the first */
> >  		if (thread) {
> > -			if (nr == (total - 2)) {
> > -				strncpy(ref_message_id, message_id,
> > -					sizeof(ref_message_id));
> > -				ref_message_id[sizeof(ref_message_id)-1]='\0';
> > -				rev.ref_message_id = ref_message_id;
> > +			if (rev.message_id) {
> > +				if (rev.ref_message_id)
> > +					free((char *) rev.message_id);
> 
> ... this one, you should make the message_id member of struct rev_info a 
> "char *".  At least for this developer, "const char *" is a sign that the 
> caller should clean up, and that the pointer _might_ point to a constant.

It's sort of like that, in that this *is* the caller, and it's using gen_message_id to set it and cleaning it up, and it could put in a constant (in which case it would have to know this and not free it), but I agree that it's more suggestive of the right things as a "char *".

	-Daniel
*This .sig left intentionally blank*
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 3 of 4 in “Improve message-id generation flow control for format-patch”
  1. 1/4 Improve message-id generation flow control for format-patchDaniel Barkalow, Feb 17, 2008
  2. Johannes SchindelinFeb 18, 2008
  3. Daniel BarkalowFeb 18, 2008
  4. Johannes SchindelinFeb 18, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.