Fourth batch for 1.7.12
[gitweb.git] / rerere.c
index dee2cb1514d1e97c47a4999ed66f8996035d71fe..da18fc37dfc6cd9071b0ef5fc057048724ff3025 100644 (file)
--- 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;
@@ -538,13 +544,13 @@ static int do_plain_rerere(struct string_list *rr, int fd)
 
                if (has_rerere_resolution(name)) {
                        if (!merge(name, path)) {
-                               if (rerere_autoupdate)
+                               const char *msg;
+                               if (rerere_autoupdate) {
                                        string_list_insert(&update, path);
-                               fprintf(stderr,
-                                       "%s '%s' using previous resolution.\n",
-                                       rerere_autoupdate
-                                       ? "Staged" : "Resolved",
-                                       path);
+                                       msg = "Staged '%s' using previous resolution.\n";
+                               } else
+                                       msg = "Resolved '%s' using previous resolution.\n";
+                               fprintf(stderr, msg, path);
                                goto mark_resolved;
                        }
                }
@@ -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);