]> git.ipfire.org Git - thirdparty/git.git/commitdiff
multi-pack-index: avoid writing to global in option callback
authorJeff King <peff@peff.net>
Thu, 6 Oct 2022 13:10:53 +0000 (09:10 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 6 Oct 2022 16:56:51 +0000 (09:56 -0700)
We declare the --object-dir option like:

  OPT_CALLBACK(0, "object-dir", &opts.object_dir, ...);

but the pointer to opts.object_dir is completely unused. Instead, the
callback writes directly to a global. Which fortunately happens to be
opts.object_dir. So everything works as expected, but it's unnecessarily
confusing.

Instead, let's have the callback write to the option value pointer that
has been passed in. This also quiets a -Wunused-parameter warning (since
we don't otherwise look at "opt").

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/multi-pack-index.c

index 9b126d6ce0e7f5fbaa4a5616d45c0c9bfa41d5b5..9a18a82b0575efdff2c98707179d827fd73eacb9 100644 (file)
@@ -56,11 +56,12 @@ static struct opts_multi_pack_index {
 static int parse_object_dir(const struct option *opt, const char *arg,
                            int unset)
 {
-       free(opts.object_dir);
+       char **value = opt->value;
+       free(*value);
        if (unset)
-               opts.object_dir = xstrdup(get_object_directory());
+               *value = xstrdup(get_object_directory());
        else
-               opts.object_dir = real_pathdup(arg, 1);
+               *value = real_pathdup(arg, 1);
        return 0;
 }