Use fixed-size integers when writing out the index in fast-import.
Currently the pack .idx file format uses 32-bit unsigned integers for the fan-out table and the object offsets. We had previously defined these as 'unsigned int', but not every system will define that type to be a 32 bit value. To ensure maximum portability we should always use 'uint32_t'. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
@ -672,7 +672,7 @@ static char* create_index(void)
|
|||||||
struct sha1file *f;
|
struct sha1file *f;
|
||||||
struct object_entry **idx, **c, **last, *e;
|
struct object_entry **idx, **c, **last, *e;
|
||||||
struct object_entry_pool *o;
|
struct object_entry_pool *o;
|
||||||
unsigned int array[256];
|
uint32_t array[256];
|
||||||
int i, idx_fd;
|
int i, idx_fd;
|
||||||
|
|
||||||
/* Build the sorted table of object IDs. */
|
/* Build the sorted table of object IDs. */
|
||||||
@ -709,7 +709,7 @@ static char* create_index(void)
|
|||||||
sha1write(f, array, 256 * sizeof(int));
|
sha1write(f, array, 256 * sizeof(int));
|
||||||
SHA1_Init(&ctx);
|
SHA1_Init(&ctx);
|
||||||
for (c = idx; c != last; c++) {
|
for (c = idx; c != last; c++) {
|
||||||
unsigned int offset = htonl((*c)->offset);
|
uint32_t offset = htonl((*c)->offset);
|
||||||
sha1write(f, &offset, 4);
|
sha1write(f, &offset, 4);
|
||||||
sha1write(f, (*c)->sha1, sizeof((*c)->sha1));
|
sha1write(f, (*c)->sha1, sizeof((*c)->sha1));
|
||||||
SHA1_Update(&ctx, (*c)->sha1, 20);
|
SHA1_Update(&ctx, (*c)->sha1, 20);
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
#include <stdint.h>
|
||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
|
|
||||||
#ifndef NO_ICONV
|
#ifndef NO_ICONV
|
||||||
|
Reference in New Issue
Block a user