X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=fsck-objects.c;h=4ddd67699cfefccee34caa38f2334789ef43dbfc;hb=b5233a61955772b4430abb0eb1d03b7fbdd33e6a;hp=90e638e573be005033cbf7faeff6ea8e97a1e758;hpb=5e80092f7e6db09a40a62e837ca3f74f0bc5ad73;p=git.git diff --git a/fsck-objects.c b/fsck-objects.c index 90e638e5..4ddd6769 100644 --- a/fsck-objects.c +++ b/fsck-objects.c @@ -20,6 +20,13 @@ static int check_strict = 0; static int keep_cache_objects = 0; static unsigned char head_sha1[20]; +#ifdef NO_D_INO_IN_DIRENT +#define SORT_DIRENT 0 +#define DIRENT_SORT_HINT(de) 0 +#else +#define SORT_DIRENT 1 +#define DIRENT_SORT_HINT(de) ((de)->d_ino) +#endif static void objreport(struct object *obj, const char *severity, const char *err, va_list params) @@ -54,9 +61,12 @@ static void check_connectivity(void) int i; /* Look up all the requirements, warn about missing objects.. */ - for (i = 0; i < nr_objs; i++) { + for (i = 0; i < obj_allocs; i++) { struct object *obj = objs[i]; + if (!obj) + continue; + if (!obj->parsed) { if (!standalone && has_sha1_file(obj->sha1)) ; /* it is in pack */ @@ -307,7 +317,9 @@ static void fsck_sha1_list(void) { int i, nr = sha1_list.nr; - qsort(sha1_list.entry, nr, sizeof(struct sha1_entry *), ino_compare); + if (SORT_DIRENT) + qsort(sha1_list.entry, nr, + sizeof(struct sha1_entry *), ino_compare); for (i = 0; i < nr; i++) { struct sha1_entry *entry = sha1_list.entry[i]; unsigned char *sha1 = entry->sha1; @@ -361,7 +373,7 @@ static int fsck_dir(int i, char *path) memcpy(name+2, de->d_name, len+1); if (get_sha1_hex(name, sha1) < 0) break; - add_sha1_list(sha1, de->d_ino); + add_sha1_list(sha1, DIRENT_SORT_HINT(de)); continue; } fprintf(stderr, "bad sha1 file: %s/%s\n", path, de->d_name);