config: clarify memory ownership when preparing comment strings
The ownership of memory returned when preparing a comment string is quite intricate: when the returned value is different than the passed value, then the caller is responsible to free the memory. This is quite subtle, and it's even easier to miss because the returned value is in fact a `const char *`. Adapt the function to always return either `NULL` or a newly allocated string. The function is called at most once per git-config(1), so it's not like this micro-optimization really matters. Thus, callers are now always responsible for freeing the value. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
786a3e4b8d
commit
a78b462976
2
config.h
2
config.h
@ -338,7 +338,7 @@ void git_config_set_multivar(const char *, const char *, const char *, unsigned)
|
||||
int repo_config_set_multivar_gently(struct repository *, const char *, const char *, const char *, unsigned);
|
||||
int git_config_set_multivar_in_file_gently(const char *, const char *, const char *, const char *, const char *, unsigned);
|
||||
|
||||
const char *git_config_prepare_comment_string(const char *);
|
||||
char *git_config_prepare_comment_string(const char *);
|
||||
|
||||
/**
|
||||
* takes four parameters:
|
||||
|
Reference in New Issue
Block a user