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