Commit 83c93a7cc215956083e0c81155128adf4a5ca2f3

Patrick Steinhardt 2016-04-01T09:37:55

merge_driver: fix missing `goto done;` The code initializing the merge driver registry accidentally forgot a `goto done` in case of an error. Because of this the next line, which registers the global shutdown callback for the merge drivers, is only called when an error occured. Fix this by adding the missing `goto done`. This fixes some memory leaks when the global state is shut down.

1
2
3
4
5
6
7
8
9
10
11
12
diff --git a/src/merge_driver.c b/src/merge_driver.c
index cc039db..88a53ec 100644
--- a/src/merge_driver.c
+++ b/src/merge_driver.c
@@ -178,6 +178,7 @@ int git_merge_driver_global_init(void)
 			merge_driver_name__union, &git_merge_driver__union.base)) < 0 ||
 		(error = merge_driver_registry_insert(
 			merge_driver_name__binary, &git_merge_driver__binary)) < 0)
+		goto done;
 
 	git__on_shutdown(git_merge_driver_global_shutdown);