index-pack: report correct bad object offsets even if they are large
Use the right type for offsets in this case, off_t, which makes a difference on 32-bit systems with large file support, and change formatting code accordingly. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy committed
Jul 13, 2016 at 17:44 UTC
fd3e67474c0b349049ccff5f72a50ef930a56013
1 file changed
+4
-3
builtin/index-pack.c
+4
-3
@@ -338,10 +338,10 @@ static void parse_pack_header(void)
338
use(sizeof(struct pack_header));
339
}
340
341
-static NORETURN void bad_object(unsigned long offset, const char *format,
341
+static NORETURN void bad_object(off_t offset, const char *format,
342
...) __attribute__((format (printf, 2, 3)));
343
344
-static NORETURN void bad_object(unsigned long offset, const char *format, ...)
344
+static NORETURN void bad_object(off_t offset, const char *format, ...)
345
{
346
va_list params;
347
char buf[1024];
@@ -349,7 +349,8 @@ static NORETURN void bad_object(unsigned long offset, const char *format, ...)
349
va_start(params, format);
350
vsnprintf(buf, sizeof(buf), format, params);
351
va_end(params);
352
- die(_("pack has bad object at offset %lu: %s"), offset, buf);
352
+ die(_("pack has bad object at offset %"PRIuMAX": %s"),
353
+ (uintmax_t)offset, buf);
354
}
355
356
static inline struct thread_local *get_thread_data(void)