X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=rerere.c;h=dcb525a4d03faeba53d108d2e175a6d04f99d160;hb=28f555f6357ee0706847aff5b476b31b472b325c;hp=dee2cb1514d1e97c47a4999ed66f8996035d71fe;hpb=ce5e95383d2aab5c5a4886c2d5b47e8f1d1989b9;p=git.git diff --git a/rerere.c b/rerere.c index dee2cb151..dcb525a4d 100644 --- a/rerere.c +++ b/rerere.c @@ -47,8 +47,14 @@ static void read_rr(struct string_list *rr) name = xstrdup(buf); if (fgetc(in) != '\t') die("corrupt MERGE_RR"); - for (i = 0; i < sizeof(buf) && (buf[i] = fgetc(in)); i++) - ; /* do nothing */ + for (i = 0; i < sizeof(buf); i++) { + int c = fgetc(in); + if (c < 0) + die("corrupt MERGE_RR"); + buf[i] = c; + if (c == 0) + break; + } if (i == sizeof(buf)) die("filename too long"); string_list_insert(rr, buf)->util = name; @@ -739,6 +745,7 @@ void rerere_gc(struct string_list *rr) if (then < now - cutoff * 86400) string_list_append(&to_remove, e->d_name); } + closedir(dir); for (i = 0; i < to_remove.nr; i++) unlink_rr_item(to_remove.items[i].string); string_list_clear(&to_remove, 0);