public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: David Kastrup <dak@gnu•org>
To: Junio C Hamano <gitster@pobox•com>
Cc: git@vger•kernel.org
Subject: Re: [PATCH] blame.c: prepare_lines should not call xrealloc for every line
Date: Tue, 04 Feb 2014 22:48:57 +0100	[thread overview]
Message-ID: <87zjm6v99y.fsf@fencepost.gnu.org> (raw)
In-Reply-To: <xmqqr47i7dt4.fsf@gitster.dls.corp.google.com> (Junio C. Hamano's message of "Tue, 04 Feb 2014 13:44:55 -0800")

Junio C Hamano <gitster@pobox•com> writes:

> David Kastrup <dak@gnu•org> writes:
>
>> Ok, I now wrote
>>
>> 	for (p = buf;; num++, p++) {
>> 		p = memchr(p, '\n', end - p);
>> 		if (!p)
>> 			break;
>> 	}
>
> Looks still wrong (perhaps this is a taste issue).
>
> 	num++ is not "loop control", but the real action of this
> 	loop to count lines.  It is better left inside.

Ok.

> 	p++ is "loop control", and belongs to the third part of
> 	for(;;).

No, it isn't.  The "real" loop control is the p = memchr line.  p++ only
skips over the newline.

> 	Isn't the normal continuation condition "p < end"?

memchr returns NULL when not finding anything any more.

> so something like
>
> 	for (p = buf; p < end; p++) {
>         	p = find the end of this line
>                 if (!p)
>                 	break;
> 		num++;
> 	}
>
> perhaps?

Would crash on incomplete last line.

-- 
David Kastrup

  reply	other threads:[~2014-02-04 21:49 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-04 20:06 [PATCH] blame.c: prepare_lines should not call xrealloc for every line David Kastrup
2014-02-04 20:10 ` David Kastrup
2014-02-04 20:49   ` Junio C Hamano
2014-02-04 21:00     ` Junio C Hamano
2014-02-04 21:09       ` David Kastrup
2014-02-04 22:28         ` Philip Oakley
2014-02-04 22:48           ` Philip Oakley
2014-02-04 20:24 ` Junio C Hamano
2014-02-04 20:52   ` David Kastrup
2014-02-04 21:03     ` Junio C Hamano
2014-02-04 21:11       ` David Kastrup
2014-02-04 21:41         ` Junio C Hamano
2014-02-04 21:27   ` David Kastrup
2014-02-04 21:44     ` Junio C Hamano
2014-02-04 21:48       ` David Kastrup [this message]
2014-02-04 22:06         ` Junio C Hamano
2014-02-05  8:39           ` David Kastrup
2014-02-05 20:39             ` Junio C Hamano
2014-02-06  0:34               ` David Kastrup
2014-02-06 10:29               ` David Kastrup
2014-02-05  9:22   ` David Kastrup
2014-02-05 20:34     ` Junio C Hamano
2014-02-05 23:45       ` David Kastrup
  -- strict thread matches above, loose matches on Subject: below --
2014-02-04 21:40 David Kastrup
2014-02-04 21:46 David Kastrup
2014-02-12 14:27 David Kastrup
2014-02-12 19:36 ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87zjm6v99y.fsf@fencepost.gnu.org \
    --to=dak@gnu$(echo .)org \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitster@pobox$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox