Re: [PATCH 2/2] Use fixed-size integers for .idx file I/O
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jan 18, 2007, 15:15 UTC
- Message-ID
- <Pine.LNX.4.63.0701181612440.22628@wbgn013.biozentrum.uni-wuerzburg.de>
- In-Reply-To
- <45AF8A86.7070101@fs.ei.tum.de>
Hi,
On Thu, 18 Jan 2007, Simon 'corecode' Schubert wrote:
Show 11 quoted lines
> Morten Welinder wrote: > > > - return ntohl(*((unsigned int *) ((char *) index + > > > (24 * mi)))); > > > + return ntohl(*((uint32_t *)((char *)index + (24 * > > > mi)))); > > > > Is that pointer gymnastics guaranteed to work? I.e., how do we know > > that we can access an uint32_t (or unsigned) at such an address? > > if index is always aligned to a 4-byte boundary, this is safe. apart from > that, the problem already existed.
index is assigned from p->index_base, which comes from check_packed_git_idx(), and there it comes from an xmmap(). AFAICT mmap() (and for NO_MMAP, malloc()) _always_ return aligned pointers, so there is no problem, as long as the alignment step divides 24.
Ciao, Dscho