[PATCH] New git-apply test cases for patches with mulitple fragments.
[git.git] / diff.c
diff --git a/diff.c b/diff.c
index 9962fc3..137d0d0 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -134,8 +134,8 @@ static void builtin_diff(const char *name_a,
                         int complete_rewrite)
 {
        int i, next_at, cmd_size;
-       const char *diff_cmd = "diff -L%s%s -L%s%s";
-       const char *diff_arg  = "%s %s||:"; /* "||:" is to return 0 */
+       const char *const diff_cmd = "diff -L%s%s -L%s%s";
+       const char *const diff_arg  = "%s %s||:"; /* "||:" is to return 0 */
        const char *input_name_sq[2];
        const char *path0[2];
        const char *path1[2];
@@ -405,14 +405,13 @@ int diff_populate_filespec(struct diff_filespec *s, int size_only)
        return 0;
 }
 
-void diff_free_filespec_data(struct diff_filespec *s)
+void diff_free_filespec(struct diff_filespec *s)
 {
        if (s->should_free)
                free(s->data);
        else if (s->should_munmap)
                munmap(s->data, s->size);
-       s->should_free = s->should_munmap = 0;
-       s->data = NULL;
+       free(s);
 }
 
 static void prep_temp_blob(struct diff_tempfile *temp,
@@ -769,8 +768,8 @@ struct diff_filepair *diff_queue(struct diff_queue_struct *queue,
 
 void diff_free_filepair(struct diff_filepair *p)
 {
-       diff_free_filespec_data(p->one);
-       diff_free_filespec_data(p->two);
+       diff_free_filespec(p->one);
+       diff_free_filespec(p->two);
        free(p);
 }
 
@@ -782,7 +781,8 @@ static void diff_flush_raw(struct diff_filepair *p,
        char status[10];
 
        if (line_termination) {
-               const char *err = "path %s cannot be expressed without -z";
+               const char *const err =
+                       "path %s cannot be expressed without -z";
                if (strchr(p->one->path, line_termination) ||
                    strchr(p->one->path, inter_name_termination))
                        die(err, p->one->path);
@@ -1010,9 +1010,8 @@ void diff_flush(int diff_output_style, int line_termination)
                        diff_flush_name(p, line_termination);
                        break;
                }
-       }
-       for (i = 0; i < q->nr; i++)
                diff_free_filepair(q->queue[i]);
+       }
        free(q->queue);
        q->queue = NULL;
        q->nr = q->alloc = 0;