Patrick Steinhardt <ps@xxxxxx> writes: > The `git_log_output_encoding` variable can be set via the `--encoding=` > option. When doing so, we conditionally either assign it to the passed > value, or if the value is "none" we assign it the empty string. > Depending on which of the both code paths we pick though, the variable > may end up being assigned either an allocated string or a string > constant. > > This is somewhat risky and may easily lead to bugs when a different code > path may want to reassign a new value to it, freeing the previous value. > We already to this when parsing the "i18n.logoutputencoding" config in > `git_default_i18n_config()`. But because the config is typically parsed > before we parse command line options this has been fine so far. > > Regardless of that, safeguard the code such that the variable always > contains an allocated string. While at it, also free the old value in > case there was any to plug a potential memory leak. Nice. Now the thing always has to be freed once we are done. Consistency is good.