summaryrefslogtreecommitdiff
path: root/credential.c
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2021-07-01 10:51:26 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-07-01 19:32:22 (GMT)
commit5726a6b4012cd41701927a6637b9f2070e7760ee (patch)
treea89b3b9c32f4399b80f1d2d15214b8d9799f4ec8 /credential.c
parent3d97ea479fdcb88671105e2f2d04064bab110bd5 (diff)
downloadgit-5726a6b4012cd41701927a6637b9f2070e7760ee.zip
git-5726a6b4012cd41701927a6637b9f2070e7760ee.tar.gz
git-5726a6b4012cd41701927a6637b9f2070e7760ee.tar.bz2
*.c *_init(): define in terms of corresponding *_INIT macro
Change the common patter in the codebase of duplicating the initialization logic between an *_INIT macro and a corresponding *_init() function to use the macro as the canonical source of truth. Now we no longer need to keep the function up-to-date with the macro version. This implements a suggestion by Jeff King who found that under -O2 [1] modern compilers will init new version in place without the extra copy[1]. The performance of a single *_init() won't matter in most cases, but even if it does we're going to be producing efficient machine code to perform these operations. 1. https://lore.kernel.org/git/YNyrDxUO1PlGJvCn@coredump.intra.peff.net/ Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'credential.c')
-rw-r--r--credential.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/credential.c b/credential.c
index e5202fb..3c05c7c 100644
--- a/credential.c
+++ b/credential.c
@@ -10,8 +10,8 @@
void credential_init(struct credential *c)
{
- memset(c, 0, sizeof(*c));
- c->helpers.strdup_strings = 1;
+ struct credential blank = CREDENTIAL_INIT;
+ memcpy(c, &blank, sizeof(*c));
}
void credential_clear(struct credential *c)