Tanay Abhra <tanayabh@xxxxxxxxx> writes: > +int git_configset_get_string_const(struct config_set *cs, const char *key, const char **dest) > +{ > + const char *value; > + if (!git_configset_get_value(cs, key, &value)) > + return git_config_string(dest, key, value); > + else > + return 1; > +} > + > +int git_configset_get_string(struct config_set *cs, const char *key, char **dest) > +{ > + const char *value; > + if (!git_configset_get_value(cs, key, &value)) { > + if (!value) > + return config_error_nonbool(key); > + *dest = xstrdup(value); > + return 0; > + } > + else > + return 1; > +} Hmm, do we really need duplicate and an almost identical implementations? I would have expected either one of these two (expecting the latter more than the former from the discussion): 1. Because git_configset_get_string_const() returns a const string not to be touched by the caller, it does not even xstrdup(), while git_configset_get_string() does. 2. These behave identically, and the only reason we have two is because some callers want to receive the string in "char *" while others want to use "const char *". If you were going route #1, then you would need duplicate but subtly different implementations; get_string_const() variant would not be calling git_config_string() because it does xstrdup() the value and give the caller a new string the caller has to free. If you were going route #2, the I would have expected there is only one implementation, _get_string(), and _get_string_const() would call it while casting the dest parameter it receives. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html