From patchwork Fri Oct 1 01:37:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Aguilar X-Patchwork-Id: 12529653 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EE197C433EF for ; Fri, 1 Oct 2021 01:38:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CA322613D0 for ; Fri, 1 Oct 2021 01:38:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351496AbhJABjs (ORCPT ); Thu, 30 Sep 2021 21:39:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47926 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230224AbhJABjp (ORCPT ); Thu, 30 Sep 2021 21:39:45 -0400 Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com [IPv6:2607:f8b0:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 822A0C06176A for ; Thu, 30 Sep 2021 18:38:02 -0700 (PDT) Received: by mail-pl1-x632.google.com with SMTP id l6so5265110plh.9 for ; Thu, 30 Sep 2021 18:38:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zw8De/gs6tqXBIkyo43eNYy6lJpQB+q9opQQVJkZwzU=; b=RsbzSRnFD/kGNRGTnbkOktRO7sw7ALMEmRb+7KW9/k/XTH35x+LnPXBjXhk5akR39C QCTIKkA3mNfpddsOu8Q7MWhz97Dkm0P5mb0TP1jXdNVtTJafiTPyuZytyoTrCspRI2R1 YJQKWbyCITmlfBfgMj9HaOyVvVRLuZpzjhCA7N5NtKJY1hCIdgc8HJjX7AH2NhR3JQQM 71pFkgM/oyOmcYnEU3OGnbAbKYidrLwfb0TiqnBQOhd86cRINYzDKNzD2gqCI7UKZbJM WdMJF2Ijt9na7Gxl0CyayYeaFlHV3z7i0heycTrx2Cc0TqqWFnHAfxPhfEjTJUBL2tUK Gq+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zw8De/gs6tqXBIkyo43eNYy6lJpQB+q9opQQVJkZwzU=; b=6qIRP5j+ncH2QUvbJdPdb9Nln4Vo0R1fEuHreZin9+MfxF80GXXZvlEu6lRwQ4QsFh ko1B5/+Wq1AbIRawfgO0SqBwFx9XjZ0h071YKNFRU398gMj+BaPzMKazebAxt2CiMOHU ep9gmraOLCGvlZgRH6MmV+AoO6SgnCvWm3Mr+v2faDFm4JDvP8rOzJ/05D93TDfhETjn swIJVSaq7Dm3+OcyYUbXVvnQdX62yLqCEdKO/pDGT2F4uUxTZbkS8DDzQLferZuelLXD MiyMz0VkMqxnK2Q1XYd0MeFio0azLZL+S9zoAy3Fne//7b9/YRfVWBRpQpars9vTHxNB F6iA== X-Gm-Message-State: AOAM531l67UxqtdaxBSKan9xrwg8NqXCzRofQOMexxryLVmvKw9olxRa zf6fMCEOPRqS0XPqrzG0Hcb5lIqSMyk= X-Google-Smtp-Source: ABdhPJx9tyInV7mMXphuKbAt60mbRbZ1bipVGtEB5KnpJD4ywXQGbm5uyAbUeCNh8pgSxmTaWGglOg== X-Received: by 2002:a17:90b:3901:: with SMTP id ob1mr4090230pjb.231.1633052281729; Thu, 30 Sep 2021 18:38:01 -0700 (PDT) Received: from sarawiggum.fas.fa.disney.com ([198.187.190.10]) by smtp.gmail.com with ESMTPSA id c25sm4268199pfn.159.2021.09.30.18.38.00 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Sep 2021 18:38:01 -0700 (PDT) From: David Aguilar To: Git Mailing List Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= , Johannes Schindelin Subject: [PATCH v7 1/4] difftool: create a tmpdir path without repeated slashes Date: Thu, 30 Sep 2021 18:37:53 -0700 Message-Id: <20211001013756.37586-2-davvid@gmail.com> X-Mailer: git-send-email 2.33.0.886.g5b6dfe5e5c In-Reply-To: <20211001013756.37586-1-davvid@gmail.com> References: <20211001013756.37586-1-davvid@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org The paths generated by difftool are passed to user-facing diff tools. Using paths with repeated slashes in them is a cosmetic blemish that is exposed to users and can be avoided. Use a strbuf to create the buffer used for the dir-diff tmpdir. Strip trailing slashes from the value read from TMPDIR to avoid repeated slashes in the generated paths. Adjust the error handling to avoid leaking strbufs and to avoid returning -1 to cmd_main(). Signed-off-by: David Aguilar --- builtin/difftool.c | 50 ++++++++++++++++++++++----------------------- t/t7800-difftool.sh | 7 +++++++ 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/builtin/difftool.c b/builtin/difftool.c index 210da03908..0e24421682 100644 --- a/builtin/difftool.c +++ b/builtin/difftool.c @@ -252,16 +252,6 @@ static void changed_files(struct hashmap *result, const char *index_path, strbuf_release(&buf); } -static NORETURN void exit_cleanup(const char *tmpdir, int exit_code) -{ - struct strbuf buf = STRBUF_INIT; - strbuf_addstr(&buf, tmpdir); - remove_dir_recursively(&buf, 0); - if (exit_code) - warning(_("failed: %d"), exit_code); - exit(exit_code); -} - static int ensure_leading_directories(char *path) { switch (safe_create_leading_directories(path)) { @@ -333,16 +323,16 @@ static int checkout_path(unsigned mode, struct object_id *oid, static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, struct child_process *child) { - char tmpdir[PATH_MAX]; struct strbuf info = STRBUF_INIT, lpath = STRBUF_INIT; struct strbuf rpath = STRBUF_INIT, buf = STRBUF_INIT; struct strbuf ldir = STRBUF_INIT, rdir = STRBUF_INIT; struct strbuf wtdir = STRBUF_INIT; - char *lbase_dir, *rbase_dir; + struct strbuf tmpdir = STRBUF_INIT; + char *lbase_dir = NULL, *rbase_dir = NULL; size_t ldir_len, rdir_len, wtdir_len; const char *workdir, *tmp; int ret = 0, i; - FILE *fp; + FILE *fp = NULL; struct hashmap working_tree_dups = HASHMAP_INIT(working_tree_entry_cmp, NULL); struct hashmap submodules = HASHMAP_INIT(pair_cmp, NULL); @@ -351,7 +341,7 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, struct pair_entry *entry; struct index_state wtindex; struct checkout lstate, rstate; - int rc, flags = RUN_GIT_CMD, err = 0; + int flags = RUN_GIT_CMD, err = 0; const char *helper_argv[] = { "difftool--helper", NULL, NULL, NULL }; struct hashmap wt_modified, tmp_modified; int indices_loaded = 0; @@ -360,11 +350,15 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, /* Setup temp directories */ tmp = getenv("TMPDIR"); - xsnprintf(tmpdir, sizeof(tmpdir), "%s/git-difftool.XXXXXX", tmp ? tmp : "/tmp"); - if (!mkdtemp(tmpdir)) - return error("could not create '%s'", tmpdir); - strbuf_addf(&ldir, "%s/left/", tmpdir); - strbuf_addf(&rdir, "%s/right/", tmpdir); + strbuf_add_absolute_path(&tmpdir, tmp ? tmp : "/tmp"); + strbuf_trim_trailing_dir_sep(&tmpdir); + strbuf_addstr(&tmpdir, "/git-difftool.XXXXXX"); + if (!mkdtemp(tmpdir.buf)) { + ret = error("could not create '%s'", tmpdir.buf); + goto finish; + } + strbuf_addf(&ldir, "%s/left/", tmpdir.buf); + strbuf_addf(&rdir, "%s/right/", tmpdir.buf); strbuf_addstr(&wtdir, workdir); if (!wtdir.len || !is_dir_sep(wtdir.buf[wtdir.len - 1])) strbuf_addch(&wtdir, '/'); @@ -580,7 +574,7 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, flags = 0; } else setenv("GIT_DIFFTOOL_DIRDIFF", "true", 1); - rc = run_command_v_opt(helper_argv, flags); + ret = run_command_v_opt(helper_argv, flags); /* TODO: audit for interaction with sparse-index. */ ensure_full_index(&wtindex); @@ -614,7 +608,7 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, if (!indices_loaded) { struct lock_file lock = LOCK_INIT; strbuf_reset(&buf); - strbuf_addf(&buf, "%s/wtindex", tmpdir); + strbuf_addf(&buf, "%s/wtindex", tmpdir.buf); if (hold_lock_file_for_update(&lock, buf.buf, 0) < 0 || write_locked_index(&wtindex, &lock, COMMIT_LOCK)) { ret = error("could not write %s", buf.buf); @@ -644,11 +638,14 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, } if (err) { - warning(_("temporary files exist in '%s'."), tmpdir); + warning(_("temporary files exist in '%s'."), tmpdir.buf); warning(_("you may want to cleanup or recover these.")); - exit(1); - } else - exit_cleanup(tmpdir, rc); + ret = 1; + } else { + remove_dir_recursively(&tmpdir, 0); + if (ret) + warning(_("failed: %d"), ret); + } finish: if (fp) @@ -660,8 +657,9 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, strbuf_release(&rdir); strbuf_release(&wtdir); strbuf_release(&buf); + strbuf_release(&tmpdir); - return ret; + return (ret < 0) ? 1 : ret; } static int run_file_diff(int prompt, const char *prefix, diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh index 528e0dabf0..096456292c 100755 --- a/t/t7800-difftool.sh +++ b/t/t7800-difftool.sh @@ -453,6 +453,13 @@ run_dir_diff_test 'difftool --dir-diff' ' grep "^file$" output ' +run_dir_diff_test 'difftool --dir-diff avoids repeated slashes in TMPDIR' ' + TMPDIR="${TMPDIR:-/tmp}////" \ + git difftool --dir-diff $symlinks --extcmd echo branch >output && + grep -v // output >actual && + test_line_count = 1 actual +' + run_dir_diff_test 'difftool --dir-diff ignores --prompt' ' git difftool --dir-diff $symlinks --prompt --extcmd ls branch >output && grep "^sub$" output && From patchwork Fri Oct 1 01:37:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Aguilar X-Patchwork-Id: 12529655 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ED4E9C433F5 for ; Fri, 1 Oct 2021 01:38:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D173B613D0 for ; Fri, 1 Oct 2021 01:38:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351509AbhJABju (ORCPT ); Thu, 30 Sep 2021 21:39:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47936 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351469AbhJABjr (ORCPT ); Thu, 30 Sep 2021 21:39:47 -0400 Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EADB4C06176C for ; Thu, 30 Sep 2021 18:38:03 -0700 (PDT) Received: by mail-pj1-x102e.google.com with SMTP id na16-20020a17090b4c1000b0019f5bb661f9so2327834pjb.0 for ; Thu, 30 Sep 2021 18:38:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KMrW3T+dNX1hA1iYAScQawmJ+PNR0g4QQpf8KJmIOrM=; b=UNw/3EBJcpb5bZTCBYXTeNy8H+P3WFptXmiye73zrW2l+5CAXNK+kWF9SjYBHQETjA Iy8FlAVItXO0t5SH43rpyUoR+vHHUhPiI4qWI1b3NnXMxbhIkyvjXSgpoUSD3iMgJDCR TTRBj/HwuAIMUGIxhIYiUMcmhkXFOf5HpugzjxAMkGMPCajOAEPwrviX4RmI4vqisIN2 FVR67U/5IxRC4fgviVcHygT/Z1K2HjdKktKjg0zoDRnXMNP9zoMWzun6PTdC4VijvRRg lVDmH1Kplv9K9ki36NpVPXFaE74tpWhPtOj8WjTHAXo7Ycuy1Uomuve/qJTj6HvvTxS6 i/rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KMrW3T+dNX1hA1iYAScQawmJ+PNR0g4QQpf8KJmIOrM=; b=hFN2S16otDGaRiUkdgLQGAEpbbH67tLifryanxGCQa3llLR0XyZP6xwKAlZkEwrg6Y NQ2Es6Y0byXrHiLj2c76R2/CZnj2gTY8ZYwCqzkEN0xWD/tjmmyGBIyKrQGxxWUirz9P W3hnrDm+vpy3q+tELb/VacUhsAvPiGR67ZGoM4Lh8TN6xzAeLv6tWvxYmImQYiNxdN8s qo1vszI5ubDeFUvi2rSDWT440Npi2Qd3moXTLUTuAe7QuLCFlJwvvYoaKzxJviLBn5uk O482tHBApU1Up+MGpzOfoMvyEf5ln5I4TIezWxz4gxK6Y60hg6zRweEeUV9SjQIEN2D6 cLYg== X-Gm-Message-State: AOAM530ic0bT2sGb1l7XMxFm1+YoZpvn1ltWuXQzaZTBwTib1tZOrTkv BcJGBRQ2buoJqacNfF1rOb9XmnS+E3w= X-Google-Smtp-Source: ABdhPJwzlbriR2ftX0Bb478veXBqwmGj6HSTr5njZ7KyUYYBZSqUfc2i2u8E57EKbjdorRz2hQFemg== X-Received: by 2002:a17:902:c408:b0:13d:c6ef:7cf3 with SMTP id k8-20020a170902c40800b0013dc6ef7cf3mr6957113plk.86.1633052283113; Thu, 30 Sep 2021 18:38:03 -0700 (PDT) Received: from sarawiggum.fas.fa.disney.com ([198.187.190.10]) by smtp.gmail.com with ESMTPSA id c25sm4268199pfn.159.2021.09.30.18.38.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Sep 2021 18:38:02 -0700 (PDT) From: David Aguilar To: Git Mailing List Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= , Johannes Schindelin Subject: [PATCH v7 2/4] difftool: refactor dir-diff to write files using helper functions Date: Thu, 30 Sep 2021 18:37:54 -0700 Message-Id: <20211001013756.37586-3-davvid@gmail.com> X-Mailer: git-send-email 2.33.0.886.g5b6dfe5e5c In-Reply-To: <20211001013756.37586-1-davvid@gmail.com> References: <20211001013756.37586-1-davvid@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a helpers function to handle the unlinking and writing of the dir-diff submodule and symlink stand-in files. Use the helpers to implement the guts of the hashmap loops. This eliminate duplicate code and safeguards the submodules hashmap loop against the symlink-chasing behavior that 5bafb3576a (difftool: fix symlink-file writing in dir-diff mode, 2021-09-22) addressed. The submodules loop should not strictly require the unlink() call that this is introducing to them, but it does not necessarily hurt them either beyond the cost of the extra unlink(). Signed-off-by: David Aguilar --- builtin/difftool.c | 50 ++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/builtin/difftool.c b/builtin/difftool.c index 0e24421682..f3cd1e5b53 100644 --- a/builtin/difftool.c +++ b/builtin/difftool.c @@ -320,6 +320,31 @@ static int checkout_path(unsigned mode, struct object_id *oid, return ret; } +static void write_file_in_directory(struct strbuf *dir, size_t dir_len, + const char *path, const char *content) +{ + add_path(dir, dir_len, path); + ensure_leading_directories(dir->buf); + unlink(dir->buf); + write_file(dir->buf, "%s", content); +} + +/* Write the file contents for the left and right sides of the difftool + * dir-diff representation for submodules and symlinks. Symlinks and submodules + * are written as regular text files so that external diff tools can diff them + * as text files, resulting in behavior that is analogous to to what "git diff" + * displays for symlink and submodule diffs. + */ +static void write_standin_files(struct pair_entry *entry, + struct strbuf *ldir, size_t ldir_len, + struct strbuf *rdir, size_t rdir_len) +{ + if (*entry->left) + write_file_in_directory(ldir, ldir_len, entry->path, entry->left); + if (*entry->right) + write_file_in_directory(rdir, rdir_len, entry->path, entry->right); +} + static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, struct child_process *child) { @@ -529,16 +554,7 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, */ hashmap_for_each_entry(&submodules, &iter, entry, entry /* member name */) { - if (*entry->left) { - add_path(&ldir, ldir_len, entry->path); - ensure_leading_directories(ldir.buf); - write_file(ldir.buf, "%s", entry->left); - } - if (*entry->right) { - add_path(&rdir, rdir_len, entry->path); - ensure_leading_directories(rdir.buf); - write_file(rdir.buf, "%s", entry->right); - } + write_standin_files(entry, &ldir, ldir_len, &rdir, rdir_len); } /* @@ -548,18 +564,8 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, */ hashmap_for_each_entry(&symlinks2, &iter, entry, entry /* member name */) { - if (*entry->left) { - add_path(&ldir, ldir_len, entry->path); - ensure_leading_directories(ldir.buf); - unlink(ldir.buf); - write_file(ldir.buf, "%s", entry->left); - } - if (*entry->right) { - add_path(&rdir, rdir_len, entry->path); - ensure_leading_directories(rdir.buf); - unlink(rdir.buf); - write_file(rdir.buf, "%s", entry->right); - } + + write_standin_files(entry, &ldir, ldir_len, &rdir, rdir_len); } strbuf_release(&buf); From patchwork Fri Oct 1 01:37:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Aguilar X-Patchwork-Id: 12529657 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D65DBC433FE for ; Fri, 1 Oct 2021 01:38:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B37CC61A3F for ; Fri, 1 Oct 2021 01:38:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351525AbhJABjv (ORCPT ); Thu, 30 Sep 2021 21:39:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47946 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351504AbhJABjt (ORCPT ); Thu, 30 Sep 2021 21:39:49 -0400 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B733DC06176C for ; Thu, 30 Sep 2021 18:38:05 -0700 (PDT) Received: by mail-pj1-x1033.google.com with SMTP id oj16so2172087pjb.1 for ; Thu, 30 Sep 2021 18:38:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SNW2ej/H3VgPZ6xKYgawhJacH5CfJ+5f+J+z1+S9TZg=; b=ZNHSCzyGreIn7uG7ekLMHlBrQDv9SuobnXmlK8dr5A9UzZQpO25WGFTqBPq4SU30XN vVfyxFQk+8iVSQeyeFDJLCCD1NJ/YLrYmjJD/a2MAKPWAVy5oquymq+S2TQAn0FYcnvi cugAp5vx4VUHt0uoWrVPTU8dgMfPnwW20QcSzxbqhIaJ4bODoCTpG6hSKuqG50Zrv5xI vWubU5rXRw15nRaN2Yk6lfjB1oTQt7tycHBSKCCMZKlkAU6NT+clP8uP28tVrHL4TMIO PUjmH7Xl8WLFbk+zSsULwefNlMxkjaBj5mDfIw7vEOfD7fBQ/fNFu8DHdkEvcMB1zRj1 f9JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SNW2ej/H3VgPZ6xKYgawhJacH5CfJ+5f+J+z1+S9TZg=; b=USZb3XRxa/T0lkEXbLsePqbbK2sLkoBYm0+5+thbIZwZ9P16V0bm898YHpkk9C1ytp Wn05SYIKoijXu/OWfEtHiL9VcbYGz18eiANZbhnwiM8tX0bwCNszOl4wSRbBM0dhBHO0 d7i5DcpZARSVFN3YNVvbmpXevTO4FaDqgTLbJ+rLsZsj2ecYqdgVinl8l0iw67+iciQR Q7dmUnig7l1m2NSrDnpEmNHoM2rkSdceQ0bcRN6NLE7QBtH1qsnMyneV4XRT3WdpQgTD 37rC51+KZRVvRJoqqgUR4v8Y29VCZGVfHZPyGK5wNOxJfkoPpos2kZ2QLJdiGy92oHti eMeQ== X-Gm-Message-State: AOAM530Dqzivxk9kRXbG/V0EAjmeAyL5kSLceZnh1ktgHOQjIR3ThOfM X1VLw7fZLMI8fmaYLimbSG0HPXvN0FA= X-Google-Smtp-Source: ABdhPJyS1hJxG03A5UdKo7QADnB6nqgLP5zmjsvDYTGiuwx4733iSlzY3+WFiEhD+12fpIBQgaF4vg== X-Received: by 2002:a17:903:32cc:b0:13c:a76c:4918 with SMTP id i12-20020a17090332cc00b0013ca76c4918mr7184828plr.50.1633052284977; Thu, 30 Sep 2021 18:38:04 -0700 (PDT) Received: from sarawiggum.fas.fa.disney.com ([198.187.190.10]) by smtp.gmail.com with ESMTPSA id c25sm4268199pfn.159.2021.09.30.18.38.03 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Sep 2021 18:38:04 -0700 (PDT) From: David Aguilar To: Git Mailing List Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= , Johannes Schindelin Subject: [PATCH v7 3/4] difftool: remove an unnecessary call to strbuf_release() Date: Thu, 30 Sep 2021 18:37:55 -0700 Message-Id: <20211001013756.37586-4-davvid@gmail.com> X-Mailer: git-send-email 2.33.0.886.g5b6dfe5e5c In-Reply-To: <20211001013756.37586-1-davvid@gmail.com> References: <20211001013756.37586-1-davvid@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org The `buf` strbuf is reused again later in the same function, so there is no benefit to calling strbuf_release(). The subsequent usage is already using strbuf_reset() to reset the buffer, so releasing it early is only going to lead to a wasteful reallocation. Remove the early call to strbuf_release(). The same strbuf is already cleaned up in the "finish:" section so nothing is leaked, either. Signed-off-by: David Aguilar --- builtin/difftool.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/builtin/difftool.c b/builtin/difftool.c index f3cd1e5b53..437474fea0 100644 --- a/builtin/difftool.c +++ b/builtin/difftool.c @@ -568,8 +568,6 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, write_standin_files(entry, &ldir, ldir_len, &rdir, rdir_len); } - strbuf_release(&buf); - strbuf_setlen(&ldir, ldir_len); helper_argv[1] = ldir.buf; strbuf_setlen(&rdir, rdir_len); From patchwork Fri Oct 1 01:37:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Aguilar X-Patchwork-Id: 12529659 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CDAC5C433F5 for ; Fri, 1 Oct 2021 01:38:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B7B78615A2 for ; Fri, 1 Oct 2021 01:38:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351530AbhJABjv (ORCPT ); Thu, 30 Sep 2021 21:39:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47956 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351503AbhJABju (ORCPT ); Thu, 30 Sep 2021 21:39:50 -0400 Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A76CBC06176A for ; Thu, 30 Sep 2021 18:38:07 -0700 (PDT) Received: by mail-pl1-x62e.google.com with SMTP id w11so5251967plz.13 for ; Thu, 30 Sep 2021 18:38:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6aixAOXBJJ5fKizWpV+Cy+SxgD/6vyTKaWdagEmFZu8=; b=dO5Ky8Srrfw3OZ0CtQJI4cVRqfAga/ZeqL3eOdXaQN6Jrf3Yf2fh0shYDn8hqxfIQs 8/odfLZgjSXwx2+wCjky2NXATzes28QitCuMX++LWH9LpBn9QPgTAIATDNbXspsQxkl+ rvnypIQ44EdKH/cZ+6Im7n9FCwlGRolUhlbnHE1dgm282yVJnoBR2RKhz70b6Eh5ipwR hq1P9EJ9teqE4NH8efbA+8pHUF9x924S01JKOqBEVVKLLCzmdFprpqII7QN4tAPW5Xzc J4mLVw2PCg87ZJvVvoOS1orQKN56CmifiGjMTp24LAUMaElXN+VOW+5UbsEpzrvtZLHw mI6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6aixAOXBJJ5fKizWpV+Cy+SxgD/6vyTKaWdagEmFZu8=; b=BdtowqHQ0yEfi2SZ8LfnZDPbM16povtJbjkzI2UvwEQYN0OuhH4xqNYT0cg1gRlJ85 aqDM9XboqDVL1tlTJ1V0ddEtdLKVc/hunTT02Nlztl+Fr+rpvkwvJdQBenqp18RwUMby dEli/ymfOB0igeD7xMDwiOpp7X/1b31i0HWaN0N8KY4wU3odYzHShss5slBPTUX+gSuD SQcvAhnWN7xZuuAeGrGBwzj3VOQrCIkfej4PqkZKZAHfb2a+uJaoTpPlbH3xCvqOKNYY ohFv45jshRcyy33CRTJfIqr36b5EV3sY6Qoe3tLP85odkh62SvIT2WnYPCFjJDHc4iUa SX0w== X-Gm-Message-State: AOAM532NeM4S+up7jEt9Lcuz7k2sIyPnKkFWwFIzbM+j3yXx84NgMn0J mEdz3wtyklZfTy/wKzKXEPfVeKEwzP8= X-Google-Smtp-Source: ABdhPJwzOqVQM4RSSBEjMVI6vTHqn8sp8V99i7sX6gBLEIEBa37Tu0UCFukVgngi35ZIPVFTiU5+xg== X-Received: by 2002:a17:902:ab43:b0:13e:6f69:d34d with SMTP id ij3-20020a170902ab4300b0013e6f69d34dmr5482424plb.33.1633052286948; Thu, 30 Sep 2021 18:38:06 -0700 (PDT) Received: from sarawiggum.fas.fa.disney.com ([198.187.190.10]) by smtp.gmail.com with ESMTPSA id c25sm4268199pfn.159.2021.09.30.18.38.05 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Sep 2021 18:38:06 -0700 (PDT) From: David Aguilar To: Git Mailing List Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= , Johannes Schindelin Subject: [PATCH v7 4/4] difftool: add a missing space to the run_dir_diff() comments Date: Thu, 30 Sep 2021 18:37:56 -0700 Message-Id: <20211001013756.37586-5-davvid@gmail.com> X-Mailer: git-send-email 2.33.0.886.g5b6dfe5e5c In-Reply-To: <20211001013756.37586-1-davvid@gmail.com> References: <20211001013756.37586-1-davvid@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Signed-off-by: David Aguilar --- builtin/difftool.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtin/difftool.c b/builtin/difftool.c index 437474fea0..4931c10845 100644 --- a/builtin/difftool.c +++ b/builtin/difftool.c @@ -558,7 +558,7 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, } /* - * Symbolic links require special treatment.The standard "git diff" + * Symbolic links require special treatment. The standard "git diff" * shows only the link itself, not the contents of the link target. * This loop replicates that behavior. */