Thanks, Ben > -----Original Message----- > From: Martin Ågren [mailto:martin.agren@xxxxxxxxx] > Sent: Friday, September 22, 2017 7:37 PM > To: Ben Peart <Ben.Peart@xxxxxxxxxxxxx> > Cc: David Turner <David.Turner@xxxxxxxxxxxx>; Ævar Arnfjörð Bjarmason > <avarab@xxxxxxxxx>; Christian Couder <christian.couder@xxxxxxxxx>; > git@xxxxxxxxxxxxxxx; Junio C Hamano <gitster@xxxxxxxxx>; Johannes > Schindelin <johannes.schindelin@xxxxxx>; Nguyễn Thái Ngọc Duy > <pclouds@xxxxxxxxx>; Jeff King <peff@xxxxxxxx> > Subject: Re: [PATCH v8 01/12] bswap: add 64 bit endianness helper get_be64 > > On 22 September 2017 at 18:35, Ben Peart <benpeart@xxxxxxxxxxxxx> > wrote: > > Add a new get_be64 macro to enable 64 bit endian conversions on memory > > that may or may not be aligned. > > I needed this to compile and pass the tests with NO_UNALIGNED_LOADS. > > Martin > > diff --git a/compat/bswap.h b/compat/bswap.h index 6b22c4621..9dc79bdf5 > 100644 > --- a/compat/bswap.h > +++ b/compat/bswap.h > @@ -183,8 +183,8 @@ static inline uint32_t get_be32(const void *ptr) static > inline uint64_t get_be64(const void *ptr) { > const unsigned char *p = ptr; > - return (uint64_t)get_be32(p[0]) << 32 | > - (uint64_t)get_be32(p[4]) << 0; > + return (uint64_t)get_be32(p + 0) << 32 | > + (uint64_t)get_be32(p + 4) << 0; This is surprising. Every other function in the file uses the p[x] syntax. Just for consistency, is there a way to stick to that syntax but still make it work correctly? Is there a typecast that can make it work? > } > > static inline void put_be32(void *ptr, uint32_t value) > -- > 2.14.1.727.g9ddaf86