From: Jacob Keller <jacob.keller@xxxxxxxxx> Hopefully the final revision here. I've squashed in the memory leak fix suggested by Stefan, and the suggested changes from Junio, including his re-worded commit messages. interdiff between v11 and v12 diff --git c/path.c w/path.c index 3dbc4478a4aa..ba60c9849ef7 100644 --- c/path.c +++ w/path.c @@ -467,7 +467,7 @@ const char *worktree_git_path(const struct worktree *wt, const char *fmt, ...) return pathname->buf; } -/* Returns 0 on success, non-zero on failure. */ +/* Returns 0 on success, negative on failure. */ #define SUBMODULE_PATH_ERR_NOT_CONFIGURED -1 static int do_submodule_path(struct strbuf *buf, const char *path, const char *fmt, va_list args) @@ -523,8 +523,10 @@ char *git_pathdup_submodule(const char *path, const char *fmt, ...) va_start(args, fmt); err = do_submodule_path(&buf, path, fmt, args); va_end(args); - if (err) + if (err) { + strbuf_release(&buf); return NULL; + } return strbuf_detach(&buf, NULL); } -------->8 Jacob Keller (7): cache: add empty_tree_oid object and helper function graph: add support for --line-prefix on all graph-aware output diff: prepare for additional submodule formats allow do_submodule_path to work even if submodule isn't checked out submodule: convert show_submodule_summary to use struct object_id * submodule: refactor show_submodule_summary with helper function diff: teach diff to display submodule difference with an inline diff Junio C Hamano (1): diff.c: remove output_prefix_length field Documentation/diff-config.txt | 9 +- Documentation/diff-options.txt | 20 +- builtin/rev-list.c | 70 +- cache.h | 29 +- diff.c | 64 +- diff.h | 11 +- graph.c | 100 ++- graph.h | 22 +- log-tree.c | 5 +- path.c | 39 +- refs/files-backend.c | 8 +- sha1_file.c | 6 + submodule.c | 190 +++++- submodule.h | 8 +- t/t4013-diff-various.sh | 6 + ...diff.diff_--line-prefix=abc_master_master^_side | 29 + t/t4013/diff.diff_--line-prefix_--cached_--_file0 | 15 + t/t4059-diff-submodule-not-initialized.sh | 127 ++++ t/t4060-diff-submodule-option-diff-format.sh | 749 +++++++++++++++++++++ t/t4202-log.sh | 323 +++++++++ 20 files changed, 1666 insertions(+), 164 deletions(-) create mode 100644 t/t4013/diff.diff_--line-prefix=abc_master_master^_side create mode 100644 t/t4013/diff.diff_--line-prefix_--cached_--_file0 create mode 100755 t/t4059-diff-submodule-not-initialized.sh create mode 100755 t/t4060-diff-submodule-option-diff-format.sh -- 2.10.0.rc2.311.g2bd286e