Fix git-pack-objects for 64-bit platforms
[git.git] / diff.c
diff --git a/diff.c b/diff.c
index b54bbfa..afaa648 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -239,7 +239,6 @@ static const char minuses[]= "--------------------------------------------------
 
 static void show_stats(struct diffstat_t* data)
 {
-       char *prefix = "";
        int i, len, add, del, total, adds = 0, dels = 0;
        int max, max_change = 0, max_len = 0;
        int total_files = data->nr;
@@ -250,16 +249,18 @@ static void show_stats(struct diffstat_t* data)
        for (i = 0; i < data->nr; i++) {
                struct diffstat_file *file = data->files[i];
 
+               len = strlen(file->name);
+               if (max_len < len)
+                       max_len = len;
+
                if (file->is_binary || file->is_unmerged)
                        continue;
                if (max_change < file->added + file->deleted)
                        max_change = file->added + file->deleted;
-               len = strlen(file->name);
-               if (max_len < len)
-                       max_len = len;
        }
 
        for (i = 0; i < data->nr; i++) {
+               char *prefix = "";
                char *name = data->files[i]->name;
                int added = data->files[i]->added;
                int deleted = data->files[i]->deleted;
@@ -1029,6 +1030,16 @@ int diff_setup_done(struct diff_options *options)
             options->detect_rename != DIFF_DETECT_COPY) ||
            (0 <= options->rename_limit && !options->detect_rename))
                return -1;
+
+       /*
+        * These cases always need recursive; we do not drop caller-supplied
+        * recursive bits for other formats here.
+        */
+       if ((options->output_format == DIFF_FORMAT_PATCH) ||
+           (options->output_format == DIFF_FORMAT_DIFFSTAT) ||
+           (options->with_stat))
+               options->recursive = 1;
+
        if (options->detect_rename && options->rename_limit < 0)
                options->rename_limit = diff_rename_limit_default;
        if (options->setup & DIFF_SETUP_USE_CACHE) {