rm: reuse strbuf for all remove_dir_recursively() calls
PATCH 1/1 rm: reuse strbuf for all remove_dir_recursively() calls
Don't throw the memory allocated for remove_dir_recursively() away after a single call, use it for the other entries as well instead.
Signed-off-by Rene Scharfe <[email protected]>
--- builtin/rm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
builtin/rm.c +3 -2
@@ -387,6 +387,7 @@ int cmd_rm(int argc, const char **argv, const char *prefix)*/ if (!index_only) {int removed =0 , gitmodules_modified =0 ; +struct strbuf buf =STRBUF_INIT ;for (i =0 ; i < list.nr; i++) {const char *path = list.entry[i].name;if (list.entry[i].is_submodule) {
@@ -398,7 +399,7 @@ int cmd_rm(int argc, const char **argv, const char *prefix)continue ; } }else { -struct strbuf buf =STRBUF_INIT ; +strbuf_reset (&buf);strbuf_addstr (&buf, path);if (!remove_dir_recursively (&buf,0 )) { removed =1 ;
@@ -410,7 +411,6 @@ int cmd_rm(int argc, const char **argv, const char *prefix)/* Submodule was removed by user */ if (!remove_path_from_gitmodules (path)) gitmodules_modified =1 ; -strbuf_release (&buf);/* Fallthrough and let remove_path() fail. */ } }
@@ -421,6 +421,7 @@ int cmd_rm(int argc, const char **argv, const char *prefix)if (!removed)die_errno ("git rm: '%s'" , path); } +strbuf_release (&buf);if (gitmodules_modified)stage_updated_gitmodules (); }
Signature · 1 line
2.9.0