X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=update-cache.c;h=19d8f826a5d266c3ca0271c5b29c7fc504632d30;hb=14242464811bff9e8d1af8eb33367a01480a18d0;hp=69b1afec94ef0a6716c85f128696c1da835433e9;hpb=4c5abf428203524aac7ec094da692e5b89782127;p=git.git diff --git a/update-cache.c b/update-cache.c index 69b1afec..19d8f826 100644 --- a/update-cache.c +++ b/update-cache.c @@ -73,7 +73,7 @@ static int add_file_to_cache(char *path) if (allow_remove) return remove_file_from_cache(path); } - return -1; + return error("open(\"%s\"): %s", path, strerror(errno)); } namelen = strlen(path); size = cache_entry_size(namelen); @@ -131,7 +131,7 @@ static int compare_data(struct cache_entry *ce, unsigned long expected_size) if (fd >= 0) { void *buffer; unsigned long size; - char type[10]; + char type[20]; buffer = read_sha1_file(ce->sha1, type, &size); if (buffer) { @@ -249,6 +249,9 @@ static int refresh_cache(void) continue; } active_cache_changed = 1; + /* You can NOT just free active_cache[i] here, since it + * might not be necessarily malloc()ed but can also come + * from mmap(). */ active_cache[i] = new; } return has_errors; @@ -369,8 +372,10 @@ int main(int argc, char **argv) continue; } if (!strcmp(path, "--cacheinfo")) { - if (i+3 >= argc || add_cacheinfo(argv[i+1], argv[i+2], argv[i+3])) + if (i+3 >= argc) die("update-cache: --cacheinfo "); + if (add_cacheinfo(argv[i+1], argv[i+2], argv[i+3])) + die("update-cache: --cacheinfo cannot add %s", argv[i+3]); i += 3; continue; }