Fix missing return values and some error tests for empty index files
Patches from Dave Jones and Ingo Molnar, but since I don't have any infrastructure in place to use the old patch applicator scripts I am trying to build up, I ended up fixing the thing by hand instead. Credit where credit is due, though. Nice to see that people are taking a look at the project even in this early stage.maint
parent
1ea34e365b
commit
59c1e24980
2
cache.h
2
cache.h
|
|
@ -56,7 +56,7 @@ struct cache_entry {
|
|||
unsigned int st_size;
|
||||
unsigned char sha1[20];
|
||||
unsigned short namelen;
|
||||
unsigned char name[0];
|
||||
char name[0];
|
||||
};
|
||||
|
||||
const char *sha1_file_directory;
|
||||
|
|
@ -30,6 +30,7 @@ static int fsck_tree(unsigned char *sha1, void *data, unsigned long size)
|
|||
size -= len + 20;
|
||||
mark_needs_sha1(sha1, "blob", file_sha1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fsck_commit(unsigned char *sha1, void *data, unsigned long size)
|
||||
|
|
@ -49,6 +50,7 @@ static int fsck_commit(unsigned char *sha1, void *data, unsigned long size)
|
|||
mark_needs_sha1(sha1, "commit", parent_sha1);
|
||||
data += 7 + 40 + 1; /* "parent " + <hex sha1> + '\n' */
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fsck_entry(unsigned char *sha1, char *tag, void *data, unsigned long size)
|
||||
|
|
@ -264,10 +264,9 @@ int read_cache(void)
|
|||
size = 0; // avoid gcc warning
|
||||
map = (void *)-1;
|
||||
if (!fstat(fd, &st)) {
|
||||
map = NULL;
|
||||
size = st.st_size;
|
||||
errno = EINVAL;
|
||||
if (size > sizeof(struct cache_header))
|
||||
if (size >= sizeof(struct cache_header))
|
||||
map = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
|
||||
}
|
||||
close(fd);
|
||||
Loading…
Reference in New Issue