git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Shawn O. Pearce" <spearce@spearce.org>
To: Jeff King <peff@peff.net>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: [RFC PATCH v4 03/26] pkt-line: Make packet_read_line easier to debug
Date: Fri, 30 Oct 2009 12:12:40 -0700	[thread overview]
Message-ID: <20091030191239.GF10505@spearce.org> (raw)
In-Reply-To: <20091030175741.GC18583@coredump.intra.peff.net>

Jeff King <peff@peff.net> wrote:
> On Thu, Oct 29, 2009 at 02:58:29PM -0700, Shawn O. Pearce wrote:
> > Junio C Hamano <gitster@pobox.com> wrote:
> > > I knew and understood all of what you just said.  static linelen[] is not
> > > about stack allocation.  It's about letting the compiler initialize it to
> > > five NULs so that you do not have to assign NUL to its fifth place before
> > > you die.  This removes one added line from your patch.
> 
> I am just a bystander, so maybe my opinion is not worth anything, but
> personally I think you are obfuscating the code to save a single line.

Yup, me too.  But I'm also willing to do what I need to get my
patches included in git.git.  Smart HTTP is something a lot of people
have been waiting for.  If the maintainer wants the bikeshed to be
a particular shade of red, I'll paint it that way.

> When I see a static variable, I assume it is because the value should be
> saved from invocation to invocation, and now I will spend time wondering
> why that would be the case here.

Me too.  I also can't grok the code I just wrote, for the same
reason, it just reads wrong.  But who am I to argue with the guy
who is most likely going to be the one who needs to deal with it
in the future?
 
> If you really just want to initialize to zero, using
> 
>   char linelen[5] = { 0 };

Bleh, I find that has hard to grok as what we have now.  Perhaps my
understanding of the relevant standards is incomplete, but I'd read
that as linelen[0] = 0, but the other 4 positions are undefined
and may be not be initialized.
 
> I think it would be even more clear to leave it as
> 
>   die("protocol error: bad line length character: %.4s", linelen);

I actually considered this one, but again I wasn't clear what would
happen in the standard C library when we fed a string that wasn't
actually NUL terminated.  Is the library permitted to call strlen()
before formatting?  If so strlen() could SIGSEGV if we are unlucky
and no NUL is present between our string and the end of the assigned
memory region.

To me, my original version was the most clear, to me and anyone
else who could ever possibly come by to read it.  The "one extra
line of code" is also only in an error condition which never occurs
(but did once due to a bug in the HTTP code, which is why I added
this patch to my series, to help debug it).  Its not like this is
a performance sensitive section of git that Linus is going to come
back and overhaul.

-- 
Shawn.

  reply	other threads:[~2009-10-30 19:12 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-29  0:00 [RFC PATCH v4 00/26] Return of smart HTTP Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 01/26] http-push: fix check condition on http.c::finish_http_pack_request() Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 02/26] pkt-line: Add strbuf based functions Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 03/26] pkt-line: Make packet_read_line easier to debug Shawn O. Pearce
2009-10-29  3:27   ` Junio C Hamano
2009-10-29 15:11     ` Shawn O. Pearce
2009-10-29 20:43       ` Junio C Hamano
2009-10-29 21:58         ` Shawn O. Pearce
2009-10-30 17:57           ` Jeff King
2009-10-30 19:12             ` Shawn O. Pearce [this message]
2009-10-30 19:30               ` Jeff King
2009-10-30 19:31               ` David Brown
2009-10-30 19:35             ` Junio C Hamano
2009-10-29  0:00 ` [RFC PATCH v4 04/26] fetch-pack: Use a strbuf to compose the want list Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 05/26] Move "get_ack()" back to fetch-pack Shawn O. Pearce
2009-10-29  3:24   ` Junio C Hamano
2009-10-29 15:08     ` Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 06/26] Add multi_ack_detailed capability to fetch-pack/upload-pack Shawn O. Pearce
2009-10-29  5:57   ` Junio C Hamano
2009-10-29 16:17     ` Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 07/26] remote-curl: Refactor walker initialization Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 08/26] fetch: Allow transport -v -v -v to set verbosity to 3 Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 09/26] remote-helpers: Fetch more than one ref in a batch Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 10/26] remote-helpers: Support custom transport options Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 11/26] Move WebDAV HTTP push under remote-curl Shawn O. Pearce
2009-10-30 15:02   ` Tay Ray Chuan
2009-10-31  0:09     ` Shawn O. Pearce
2009-10-30 16:10   ` Tay Ray Chuan
2009-10-30 19:06     ` Clemens Buchacher
2009-10-30 23:20       ` Tay Ray Chuan
2009-10-29  0:00 ` [RFC PATCH v4 12/26] remote-helpers: return successfully if everything up-to-date Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 13/26] Git-aware CGI to provide dumb HTTP transport Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 14/26] Add stateless RPC options to upload-pack, receive-pack Shawn O. Pearce
2009-10-29  3:42   ` Junio C Hamano
2009-10-29 15:26     ` Shawn O. Pearce
2009-10-29 20:43       ` Junio C Hamano
2009-10-30 23:59         ` Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 15/26] Smart fetch and push over HTTP: server side Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 16/26] http-backend: add GIT_PROJECT_ROOT environment var Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 17/26] http-backend: reword some documentation Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 18/26] http-backend: use mod_alias instead of mod_rewrite Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 19/26] http-backend: add example for gitweb on same URL Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 20/26] http-backend: more explict LocationMatch Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 21/26] Discover refs via smart HTTP server when available Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 22/26] Smart push over HTTP: client side Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 23/26] Smart fetch " Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 24/26] Smart HTTP fetch: gzip requests Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 25/26] t5540-http-push: remove redundant fetches Shawn O. Pearce
2009-10-29  0:00 ` [RFC PATCH v4 26/26] test smart http fetch and push Shawn O. Pearce
2009-10-29  0:31   ` Clemens Buchacher
2009-10-29 14:32     ` Shawn O. Pearce
2009-10-29  3:20   ` Junio C Hamano
2009-10-29 14:37     ` Shawn O. Pearce
2009-10-29 14:56       ` Shawn O. Pearce
2009-10-30 22:21       ` Junio C Hamano
2009-10-30 22:59         ` Shawn O. Pearce
2009-10-30 16:10   ` Tay Ray Chuan
2009-10-31  0:13     ` Shawn O. Pearce
2009-10-29  8:12 ` [RFC PATCH v4 00/26] Return of smart HTTP Jakub Narebski
2009-10-29 15:28   ` Shawn O. Pearce

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=20091030191239.GF10505@spearce.org \
    --to=spearce@spearce.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
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;
as well as URLs for NNTP newsgroup(s).