path: root/csum-file.h
diff options
authorKarsten Blees <>2014-11-27 05:24:01 (GMT)
committerJunio C Hamano <>2014-12-01 02:07:34 (GMT)
commitb5007211b6582fc38647ff695b5ac51541ea9de8 (patch)
tree4208da1ac8c0929519656f951f43384e8970fa5c /csum-file.h
parent68f4e1fc6abd332726dd281c76dd63ce7d13d7a1 (diff)
pack-bitmap: do not use gcc packed attribute
The "__attribute__" flag may be a noop on some compilers. That's OK as long as the code is correct without the attribute, but in this case it is not. We would typically end up with a struct that is 2 bytes too long due to struct padding, breaking both reading and writing of bitmaps. Instead of marshalling the data in a struct, let's just provide helpers for reading and writing the appropriate types. Besides being correct on all platforms, the result is more efficient and simpler to read. Signed-off-by: Karsten Blees <> Signed-off-by: Jeff King <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'csum-file.h')
1 files changed, 11 insertions, 0 deletions
diff --git a/csum-file.h b/csum-file.h
index 9dedb03..da612c5 100644
--- a/csum-file.h
+++ b/csum-file.h
@@ -39,4 +39,15 @@ extern void sha1flush(struct sha1file *f);
extern void crc32_begin(struct sha1file *);
extern uint32_t crc32_end(struct sha1file *);
+static inline void sha1write_u8(struct sha1file *f, uint8_t data)
+ sha1write(f, &data, sizeof(data));
+static inline void sha1write_be32(struct sha1file *f, uint32_t data)
+ data = htonl(data);
+ sha1write(f, &data, sizeof(data));