Re: [PATCH 2/2] Use fixed-size integers for .idx file I/O

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Simon 'corecode' Schubert <corecode@xxxxxxxxxxxx> wrote:
> 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.

Its always 4-byte aligned here.  The index is mmap()'d as one huge
chunk so the first byte of the index is page aligned.  The index
starts out with 256 4-byte words, then is composed of 24 byte units
(20 byte SHA1, 4 byte offset).  So no worries with the current file
format, or code.

Yes, we're taking the leap of faith that any currently-used processor
will work on 32 bit unsigned integers if they are 4 byte aligned in
memory.  Maybe someone has a processor that this isn't true for, but
a lot of other software would probably break on that same system...

-- 
Shawn.
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]