git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 2/4] config: drop file pointer validity check in get_next_char()

From
Heiko Voigt <hvoigt@hvoigt.net>
Date
Mar 12, 2013, 16:16 UTC
Message-ID
<20130312161620.GA4551@sandbox-ub.fritz.box>
In-Reply-To
<20130312160056.GB4472@sandbox-ub.fritz.box>
On Tue, Mar 12, 2013 at 05:00:56PM +0100, Heiko Voigt wrote:
Show 36 quoted lines
> On Tue, Mar 12, 2013 at 07:00:03AM -0400, Jeff King wrote:
> > On Sun, Mar 10, 2013 at 05:58:57PM +0100, Heiko Voigt wrote:
> > 
> > > The only location where cf is set in this file is in do_config_from().
> > > This function has only one callsite which is config_from_file(). In
> > > config_from_file() its ensured that the f member is set to non-zero.
> > > [...]
> > > -	if (cf && ((f = cf->f) != NULL)) {
> > > +	if (cf) {
> > 
> > I still think we can drop this conditional entirely. The complete call
> > graph looks like:
> > 
> >   git_config_from_file
> >     -> git_parse_file
> >       -> get_next_char
> >       -> get_value
> >           -> get_next_char
> >           -> parse_value
> >               -> get_next_char
> >       -> get_base_var
> >           -> get_next_char
> >           -> get_extended_base_var
> >               -> get_next_char
> > 
> > That is, every path to get_next_char happens while we are in
> > git_config_from_file, and that function guarantees that cf = &top, and
> > that top.f != NULL.  We do not have to even do any analysis of the
> > conditions for each call, because we never change "cf" nor "top.f"
> > except when we set them in git_config_from_file.
> 
> Ok if you say so I will do that :-). I was thinking about adding a patch
> that would remove cf as a global variable and explicitely pass it down
> to get_next_char. That makes it more obvious that it actually is != NULL.
> Looking at your callgraph I do not think its that much work. What do you
> think?

I just had a look and unfortunately there are other functions that use this variable (namely handle_path_include) for which its not that easy to pass this in. So I will just drop the check here.

Cheers Heiko
Previous: Heiko VoigtNext: Jeff King
Message 10 of 24 in “allow more sources for config values”
  1. 0/4 allow more sources for config valuesHeiko Voigt, Mar 10, 2013
  2. 1/4 config: factor out config file stack managementHeiko Voigt, Mar 10, 2013
  3. Jeff KingMar 12, 2013
  4. Heiko VoigtMar 12, 2013
  5. Jeff KingMar 12, 2013
  6. Heiko VoigtMar 14, 2013
  7. 2/4 config: drop file pointer validity check in get_next_char()Heiko Voigt, Mar 10, 2013
  8. Jeff KingMar 12, 2013
  9. Heiko VoigtMar 12, 2013
  10. Heiko VoigtMar 12, 2013
  11. Jeff KingMar 12, 2013
  12. Jeff KingMar 12, 2013
  13. 3/4 config: make parsing stack struct independent from actual data sourceHeiko Voigt, Mar 10, 2013
  14. Jeff KingMar 12, 2013
  15. Heiko VoigtMar 12, 2013
  16. Jeff KingMar 12, 2013
  17. 4/4 teach config parsing to read from strbufHeiko Voigt, Mar 10, 2013
  18. Jeff KingMar 12, 2013
  19. Heiko VoigtMar 12, 2013
  20. Jeff KingMar 12, 2013
  21. Heiko VoigtMar 14, 2013
  22. Jeff KingMar 14, 2013
  23. Jeff KingMar 14, 2013
  24. Heiko VoigtMar 18, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.