On Wed, Jan 25, 2017 at 02:35:36PM -0800, Junio C Hamano wrote: > -- >8 -- > Subject: [PATCH] connect: core.sshvariant to correct misidentification I have been watching this discussion from the sidelines, and I agree that this direction is a big improvement. > +static void override_ssh_variant(int *port_option, int *needs_batch) > +{ > + const char *variant; > + > + if (git_config_get_string_const("core.sshvariant", &variant)) > + return; > + if (!strcmp(variant, "tortoiseplink")) { > + *port_option = 'P'; > + *needs_batch = 1; > + } else if (!strcmp(variant, "putty")) { > + *port_option = 'P'; > + *needs_batch = 0; > + } else { > + /* default */ > + if (strcmp(variant, "ssh")) { > + warning(_("core.sshvariant: unknown value '%s'"), variant); > + warning(_("using OpenSSH compatible behaviour")); > + } > + *port_option = 'p'; > + *needs_batch = 0; > + } > +} IIRC, the "const" in git_config_get_string_const is only about avoiding an annoying cast. The result is still allocated and needs freed. Since you are not keeping the value after the function returns, I think you could just use git_config_get_value(). (Grepping around, I see a few other places that seem to make the same mistake. I think this is a confusing interface that should probably be fixed). -Peff