rebase: Support preserving merges in non-interactive mode
[gitweb.git] / diffcore-pickaxe.c
index cfcce315babb0edb7ad7be7f2ab2437aaf41eb9d..af9fffe6e8e145b066157da8791c749257e7c8e9 100644 (file)
@@ -5,8 +5,6 @@
 #include "diff.h"
 #include "diffcore.h"
 
-#include <regex.h>
-
 static unsigned int contains(struct diff_filespec *one,
                             const char *needle, unsigned long len,
                             regex_t *regexp)
@@ -16,6 +14,8 @@ static unsigned int contains(struct diff_filespec *one,
        const char *data;
        if (diff_populate_filespec(one, 0))
                return 0;
+       if (!len)
+               return 0;
 
        sz = one->size;
        data = one->data;
@@ -44,6 +44,7 @@ static unsigned int contains(struct diff_filespec *one,
                        }
                }
        }
+       diff_free_filespec_data(one);
        return cnt;
 }
 
@@ -101,7 +102,7 @@ void diffcore_pickaxe(const char *needle, int opts)
                for (i = 0; i < q->nr; i++)
                        diff_free_filepair(q->queue[i]);
        }
-       else 
+       else
                /* Showing only the filepairs that has the needle */
                for (i = 0; i < q->nr; i++) {
                        struct diff_filepair *p = q->queue[i];