Commit b87776151ad40caaec8bfe1becec4db429c9ea96

Russell Belfer 2014-03-14T15:37:42

Fix refcount issues with mutex protected ignores Some ignore files were not being freed from the cache.

diff --git a/src/ignore.c b/src/ignore.c
index 5cf4fca..9b3c6a8 100644
--- a/src/ignore.c
+++ b/src/ignore.c
@@ -204,9 +204,23 @@ int git_ignore__pop_dir(git_ignores *ign)
 
 void git_ignore__free(git_ignores *ignores)
 {
-	/* don't need to free ignores->ign_internal since it is in cache */
+	unsigned int i;
+	git_attr_file *file;
+
+	/* don't need to free ignores->ign_internal it is cached exactly once */
+
+	git_vector_foreach(&ignores->ign_path, i, file) {
+		git_attr_file__free(file);
+		ignores->ign_path.contents[i] = NULL;
+	}
 	git_vector_free(&ignores->ign_path);
+
+	git_vector_foreach(&ignores->ign_global, i, file) {
+		git_attr_file__free(file);
+		ignores->ign_global.contents[i] = NULL;
+	}
 	git_vector_free(&ignores->ign_global);
+
 	git_buf_free(&ignores->dir);
 }