tree functions: return an int Stop returning a void for functions, future-proofing them to allow them to fail.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
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)