Commit 3351506aa8ef2b14d28fca5fb4edd55b2f15ad1b

Edward Thomson 2020-01-18T17:38:36

tree functions: return an int Stop returning a void for functions, future-proofing them to allow them to fail.

diff --git a/include/git2/tree.h b/include/git2/tree.h
index 4455d2e..1a8e155 100644
--- a/include/git2/tree.h
+++ b/include/git2/tree.h
@@ -258,8 +258,9 @@ GIT_EXTERN(int) git_treebuilder_new(
  * Clear all the entires in the builder
  *
  * @param bld Builder to clear
+ * @return 0 on success; error code otherwise
  */
-GIT_EXTERN(void) git_treebuilder_clear(git_treebuilder *bld);
+GIT_EXTERN(int) git_treebuilder_clear(git_treebuilder *bld);
 
 /**
  * Get the number of entries listed in a treebuilder
@@ -357,8 +358,9 @@ typedef int GIT_CALLBACK(git_treebuilder_filter_cb)(
  * @param bld Tree builder
  * @param filter Callback to filter entries
  * @param payload Extra data to pass to filter callback
+ * @return 0 on success, non-zero callback return value, or error code
  */
-GIT_EXTERN(void) git_treebuilder_filter(
+GIT_EXTERN(int) git_treebuilder_filter(
 	git_treebuilder *bld,
 	git_treebuilder_filter_cb filter,
 	void *payload);
diff --git a/src/tree.c b/src/tree.c
index cd6ab9b..48468df 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -834,7 +834,7 @@ out:
 	return error;
 }
 
-void git_treebuilder_filter(
+int git_treebuilder_filter(
 	git_treebuilder *bld,
 	git_treebuilder_filter_cb filter,
 	void *payload)
@@ -850,9 +850,11 @@ void git_treebuilder_filter(
 				git_tree_entry_free(entry);
 			}
 	});
+
+	return 0;
 }
 
-void git_treebuilder_clear(git_treebuilder *bld)
+int git_treebuilder_clear(git_treebuilder *bld)
 {
 	git_tree_entry *e;
 
@@ -860,6 +862,8 @@ void git_treebuilder_clear(git_treebuilder *bld)
 
 	git_strmap_foreach_value(bld->map, e, git_tree_entry_free(e));
 	git_strmap_clear(bld->map);
+
+	return 0;
 }
 
 void git_treebuilder_free(git_treebuilder *bld)