From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>, "Jeff King" <peff@peff.net>,
"Martin Ågren" <martin.agren@gmail.com>,
"Phillip Wood" <phillip.wood123@gmail.com>,
"Elijah Newren" <newren@gmail.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH v3 0/6] Non-trivial designated initializer conversion
Date: Fri, 1 Oct 2021 12:27:30 +0200 [thread overview]
Message-ID: <cover-v3-0.6-00000000000-20211001T102056Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-v2-0.5-00000000000-20210927T125715Z-avarab@gmail.com>
See
http://lore.kernel.org/git/cover-0.6-00000000000-20210927T004920Z-avarab@gmail.com
for the v1 & goals, and
https://lore.kernel.org/git/cover-v2-0.5-00000000000-20210927T125715Z-avarab@gmail.com/
for the v2.
This v3:
* Addresses Junio's comments about URLMATCH_CONFIG_INIT use, I'm no
longer removing explicit assignments to NULL related to it.
* Updates the commit message of 5/6 for the discussion ending at
https://lore.kernel.org/git/xmqqv92lmv2b.fsf@gitster.g/
* I've added a new 6/6 with an UNPACK_TREES_OPTIONS_INIT. It's
related to the discussion about how unpack-trees.[ch] memory
management happens at [1], but is really orthagonal to the points
Elijah and I were discussing there.
I think whatever approach we'd decide to go with (his in
en/removing-untracked-fixes, or my WIP suggestion) the move to an
UNPACK_TREES_OPTIONS_INIT makes sense, and would be the same either
way.
It does make the WIP patches I've got at[1] to solve memory leaks &
simplify the setup in unpack-trees.[ch] much smaller, and is like
the other *_INIT changes here, so I've included it.
1. https://lore.kernel.org/git/87fstlrumj.fsf@evledraar.gmail.com/
2. https://github.com/avar/git/compare/avar/post-sanitize-leak-test-mode-add-and-use-revisions-release...avar/post-sanitize-leak-test-mode-unpack-trees-and-dir
Ævar Arnfjörð Bjarmason (6):
daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro
builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro
urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT
builtin/remote.c: add and use a REF_STATES_INIT
builtin/remote.c: add and use SHOW_INFO_INIT
unpack-trees.[ch]: define and use a UNPACK_TREES_OPTIONS_INIT
archive.c | 3 +-
builtin/am.c | 6 +--
builtin/blame.c | 30 +++++------
builtin/checkout.c | 6 +--
builtin/clone.c | 3 +-
builtin/commit.c | 3 +-
builtin/config.c | 2 +-
builtin/merge.c | 3 +-
builtin/read-tree.c | 3 +-
builtin/remote.c | 111 +++++++++++++++++++-------------------
builtin/reset.c | 3 +-
builtin/sparse-checkout.c | 3 +-
builtin/stash.c | 6 +--
credential.c | 2 +-
daemon.c | 19 +++----
diff-lib.c | 3 +-
http.c | 2 +-
merge-ort.c | 3 +-
merge-recursive.c | 4 +-
reset.c | 2 +-
sequencer.c | 3 +-
unpack-trees.h | 1 +
urlmatch.h | 4 ++
23 files changed, 103 insertions(+), 122 deletions(-)
Range-diff against v2:
1: 3130693b416 = 1: 8f3f3f97fcb daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro
2: 65c5295c1ac = 2: ced1d581f15 builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro
3: 3783788b553 ! 3: 266948e604c urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT
@@ Commit message
urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT
Change the initialization pattern of "struct urlmatch_config" to use
- an *_INIT macro and designated initializers.
+ an *_INIT macro and designated initializers. Right now there's no
+ other "struct" member of "struct urlmatch_config" which would require
+ its own *_INIT, but it's good practice not to assume that. Let's also
+ change this to a designated initializer while we're at it.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
@@ builtin/config.c: static int get_urlmatch(const char *var, const char *url)
struct string_list values = STRING_LIST_INIT_DUP;
config.collect_fn = urlmatch_collect_fn;
-- config.cascade_fn = NULL;
- config.cb = &values;
-
- if (!url_normalize(url, &config.url))
## credential.c ##
@@ credential.c: static int match_partial_url(const char *url, void *cb)
@@ credential.c: static int match_partial_url(const char *url, void *cb)
struct strbuf url = STRBUF_INIT;
if (!c->host)
-@@ credential.c: static void credential_apply_config(struct credential *c)
- return;
-
- config.section = "credential";
-- config.key = NULL;
- config.collect_fn = credential_config_callback;
-- config.cascade_fn = NULL;
- config.select_fn = select_all;
- config.fallback_match_fn = match_partial_url;
- config.cb = c;
## http.c ##
@@ http.c: void http_init(struct remote *remote, const char *url, int proactive_auth)
@@ http.c: void http_init(struct remote *remote, const char *url, int proactive_aut
+ struct urlmatch_config config = URLMATCH_CONFIG_INIT;
config.section = "http";
-- config.key = NULL;
- config.collect_fn = http_options;
- config.cascade_fn = git_default_config;
-- config.cb = NULL;
-
- http_is_verbose = 0;
- normalized_url = url_normalize(url, &config.url);
+ config.key = NULL;
## urlmatch.h ##
@@ urlmatch.h: struct urlmatch_config {
4: 13ef9566903 ! 4: 41fcb0a45e5 builtin/remote.c: add and use a REF_STATES_INIT
@@ Commit message
initialize it in those three places, skip the memset(), and pass those
structs down appropriately.
+ This would be a behavior change if we had codepaths that relied say on
+ implicitly having had "new_refs" initialized to STRING_LIST_INIT_NODUP
+ with the memset(), but only set the "strdup_strings" on some other
+ struct, but then called string_list_append() on "new_refs". There
+ isn't any such codepath, all of the late assignments to
+ "strdup_strings" assigned to those structs that we'd use for those
+ codepaths.
+
+ So just initializing them all up-front makes for easier to understand
+ code, i.e. in the pre-image it looked as though we had that tricky
+ edge case, but we didn't.
+
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## builtin/remote.c ##
5: b78a9ec0846 = 5: 25fec54877b builtin/remote.c: add and use SHOW_INFO_INIT
-: ----------- > 6: 18358f5d57a unpack-trees.[ch]: define and use a UNPACK_TREES_OPTIONS_INIT
--
2.33.0.1375.gbbd823cc90f
next prev parent reply other threads:[~2021-10-01 10:27 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-27 0:53 [PATCH 0/6] Non-trivial designated initializer conversion Ævar Arnfjörð Bjarmason
2021-09-27 0:53 ` [PATCH 1/6] daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro Ævar Arnfjörð Bjarmason
2021-09-27 0:53 ` [PATCH 2/6] builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro Ævar Arnfjörð Bjarmason
2021-09-27 0:53 ` [PATCH 3/6] shortlog: use designated initializer for "struct shortlog" Ævar Arnfjörð Bjarmason
2021-09-27 9:06 ` Phillip Wood
2021-09-27 10:52 ` Ævar Arnfjörð Bjarmason
2021-09-27 0:53 ` [PATCH 4/6] urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT Ævar Arnfjörð Bjarmason
2021-09-27 0:53 ` [PATCH 5/6] builtin/remote.c: add and use a REF_STATES_INIT Ævar Arnfjörð Bjarmason
2021-09-27 0:53 ` [PATCH 6/6] builtin/remote.c: add and use SHOW_INFO_INIT Ævar Arnfjörð Bjarmason
2021-09-27 12:58 ` [PATCH v2 0/5] Non-trivial designated initializer conversion Ævar Arnfjörð Bjarmason
2021-09-27 12:58 ` [PATCH v2 1/5] daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro Ævar Arnfjörð Bjarmason
2021-09-27 12:58 ` [PATCH v2 2/5] builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro Ævar Arnfjörð Bjarmason
2021-09-27 12:58 ` [PATCH v2 3/5] urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT Ævar Arnfjörð Bjarmason
2021-09-27 22:12 ` Junio C Hamano
2021-09-27 12:58 ` [PATCH v2 4/5] builtin/remote.c: add and use a REF_STATES_INIT Ævar Arnfjörð Bjarmason
2021-09-27 23:04 ` Junio C Hamano
2021-09-27 23:38 ` Ævar Arnfjörð Bjarmason
2021-09-27 23:56 ` Junio C Hamano
2021-09-27 12:58 ` [PATCH v2 5/5] builtin/remote.c: add and use SHOW_INFO_INIT Ævar Arnfjörð Bjarmason
2021-10-01 10:27 ` Ævar Arnfjörð Bjarmason [this message]
2021-10-01 10:27 ` [PATCH v3 1/6] daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro Ævar Arnfjörð Bjarmason
2021-10-01 10:27 ` [PATCH v3 2/6] builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro Ævar Arnfjörð Bjarmason
2021-10-01 10:27 ` [PATCH v3 3/6] urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT Ævar Arnfjörð Bjarmason
2021-10-01 10:27 ` [PATCH v3 4/6] builtin/remote.c: add and use a REF_STATES_INIT Ævar Arnfjörð Bjarmason
2021-10-01 10:27 ` [PATCH v3 5/6] builtin/remote.c: add and use SHOW_INFO_INIT Ævar Arnfjörð Bjarmason
2021-10-01 10:27 ` [PATCH v3 6/6] unpack-trees.[ch]: define and use a UNPACK_TREES_OPTIONS_INIT Ævar Arnfjörð Bjarmason
2021-10-01 21:39 ` Junio C Hamano
2021-10-02 20:16 ` [PATCH v4 0/5] Non-trivial designated initializer conversion Ævar Arnfjörð Bjarmason
2021-10-02 20:16 ` [PATCH v4 1/5] daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro Ævar Arnfjörð Bjarmason
2021-10-02 20:16 ` [PATCH v4 2/5] builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro Ævar Arnfjörð Bjarmason
2021-10-02 20:16 ` [PATCH v4 3/5] urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT Ævar Arnfjörð Bjarmason
2021-10-02 20:16 ` [PATCH v4 4/5] builtin/remote.c: add and use a REF_STATES_INIT Ævar Arnfjörð Bjarmason
2021-10-02 20:16 ` [PATCH v4 5/5] builtin/remote.c: add and use SHOW_INFO_INIT Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover-v3-0.6-00000000000-20211001T102056Z-avarab@gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=martin.agren@gmail.com \
--cc=newren@gmail.com \
--cc=peff@peff.net \
--cc=phillip.wood123@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).