But if we still static const char* for git_etc_gitattributes and will not free it in bootstrap_attr_stack there will no memory leak, just tested it, so i'll remove free for it. 2014-11-25 12:45 GMT+06:00 Alexander Kuleshov <kuleshovmail@xxxxxxxxx>: > Hello Junio, > > I returned static to git_etc_gitattributes return value, but now i > can't understand where to free 'system_wide'. As i understand > correctly attr.c has following API for querying attributes: > > git_attr > > git_check_attr > > And as i see in code git_attr doesn't use git_attr_check, so now we > have only git_check_attr and git_all_stars functions which are through > prepare_attr_stack and bootstrap_attr_stack in it uses path which > returned > by system_path. So you're right if i free etc_attributes like this > and git_etc_gitattributes will return static value we'll have access > to freed memory if it will called again. But we have no access to > etc_attributes outside bootstrap_attr_stack so where will be best > place to free it? > > Thank you > > 2014-11-25 2:50 GMT+06:00 Junio C Hamano <gitster@xxxxxxxxx>: >> Alex Kuleshov <kuleshovmail@xxxxxxxxx> writes: >> >>>> One thing to note is that this illustration does not consider memory >>>> pointed at by the "system_wide" variable here (from attr.c) >>>> >>>> static const char *git_etc_gitattributes(void) >>>> { >>>> static const char *system_wide; >>>> if (!system_wide) >>>> system_wide = system_path(ETC_GITATTRIBUTES); >>>> return system_wide; >>>> } >>>> >>>> at the point of process exit as a "leak". >>> >>> But why? We allocated memory to "system_wide" with system_path, next git >>> will exit somewhere with die, but system_wide didn't free... Or i'm >>> wrong here too? >> >> It is in the same league as "static const char *git_dir" and friends >> that appear in the file-scope-static of environment.c. Keeping small >> things around to be cleaned up by exit() is not a crime. > > > > -- > _________________________ > 0xAX -- _________________________ 0xAX -- 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