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

Re: [PATCH] git-diff: fix combined diff

From
Jeff King <peff@peff.net>
Date
Feb 23, 2007, 05:34 UTC
Message-ID
<20070223053428.GA13301@coredump.intra.peff.net>
In-Reply-To
<Pine.LNX.4.63.0702230517480.22628@wbgn013.biozentrum.uni-wuerzburg.de>
On Fri, Feb 23, 2007 at 05:20:32AM +0100, Johannes Schindelin wrote:
> With "const unsigned (*parent)[20]", "parent + 1" is not the
> same as "&parent[1]"...

Actually, they _are_ the same (the C standard definition of A[B] is *(A+B)). The problem is the operator precedence of the cast:

> -		hashcpy((unsigned char*)parent + i, ent[ents - 1 - i].item->sha1);

which translates to "cast parent to an unsigned char pointer, and then add i * sizeof(unsigned char) to it".

Your fix works because [] binds more tightly, fixing the precedence
problem. You could also do this:
  hashcpy((unsigned char*)(parent + i), ...
-Peff
Previous: Junio C HamanoNext: Johannes Schindelin
Message 4 of 5 in “git-diff: fix combined diff”
  1. git-diff: fix combined diffJohannes Schindelin, Feb 23, 2007
  2. Junio C HamanoFeb 23, 2007
  3. Junio C HamanoFeb 23, 2007
  4. Jeff KingFeb 23, 2007
  5. Johannes SchindelinFeb 23, 2007

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.