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

Re: [PATCH v2 01/11] builtin/pack-objects.c: change check_pbase_path() to use ALLOC_GROW()

From
Duy Nguyen <pclouds@gmail.com>
Date
Feb 28, 2014, 14:36 UTC
Message-ID
<CACsJy8C1Jv-7Fz=qTZ94vZCVD6s39iju2BRZdhnkSR25VoJ=Ow@mail.gmail.com>
In-Reply-To
<53109B19.8070103@alum.mit.edu>
On Fri, Feb 28, 2014 at 9:20 PM, Michael Haggerty <mhagger@alum.mit.edu> wrote:
Show 29 quoted lines
> Duy,
>
> The example in Documentation/technical/api-allocation-growing.txt does
> it the same way as Dmitry:
>
>     ALLOC_GROW(item, nr + 1, alloc);
>     item[nr++] = value you like;
>
> The alternative,
>
>     nr++;
>     ALLOC_GROW(item, nr, alloc);
>     item[nr] = value you like;
>
> is an extra line, which is at least a small argument for the variant
> shown in the docs.  (Since ALLOC_GROW is a macro, it is not OK to use
> "++nr" as its second argument.)  Personally, I also prefer the shorter
> version.  The line
>
>     item[nr++] = value
>
> is an easy-to-recognize idiom, and
>
>     ALLOC_GROW(item, nr + 1, alloc);
>
> somehow makes it more transparent by how much more space will be needed.
>
> So my vote is that the patches are OK the way Dmitry wrote them (mind, I
> have only read through 05/11 so far).
I'm not saying all patches should do

nr++; ALLOC_GROW(item, nr, alloc);

only those that do

if (..) realloc...; nr++; ....

should be reordered. Those changes that do item[nr++] = yyy should be kept. Anyway it's just an observation, not something that should block these patches.

-- 
Duy
Previous: Michael HaggertyNext: Junio C Hamano
Message 9 of 42 in “Use ALLOC_GROW() instead of inline code”
  1. Use ALLOC_GROW() instead of inline codeDmitry S. Dolzhenko, Feb 27, 2014
  2. Michael HaggertyFeb 27, 2014
  3. Junio C HamanoFeb 27, 2014
  4. 00/11 Use ALLOC_GROW() instead of inline codeDmitry S. Dolzhenko, Feb 28, 2014
  5. 01/11 builtin/pack-objects.c: change check_pbase_path() to use ALLOC_GROW()Dmitry S. Dolzhenko, Feb 28, 2014
  6. Duy NguyenFeb 28, 2014
  7. Duy NguyenFeb 28, 2014
  8. Michael HaggertyFeb 28, 2014
  9. Duy NguyenFeb 28, 2014
  10. Junio C HamanoFeb 28, 2014
  11. Jeff KingMar 1, 2014
  12. Junio C HamanoMar 3, 2014
  13. 02/11 bundle.c: change add_to_ref_list() to use ALLOC_GROW()Dmitry S. Dolzhenko, Feb 28, 2014
  14. 03/11 cache-tree.c: change find_subtree() to use ALLOC_GROW()Dmitry S. Dolzhenko, Feb 28, 2014
  15. 04/11 commit.c: change register_commit_graft() to use ALLOC_GROW()Dmitry S. Dolzhenko, Feb 28, 2014
  16. 05/11 diff.c: use ALLOC_GROW() instead of inline codeDmitry S. Dolzhenko, Feb 28, 2014
  17. 06/11 diffcore-rename.c: use ALLOC_GROW() instead of inline codeDmitry S. Dolzhenko, Feb 28, 2014
  18. 07/11 patch-ids.c: change add_commit() to use ALLOC_GROW()Dmitry S. Dolzhenko, Feb 28, 2014
  19. 08/11 replace_object.c: change register_replace_object() to use ALLOC_GROW()Dmitry S. Dolzhenko, Feb 28, 2014
  20. 09/11 reflog-walk.c: use ALLOC_GROW() instead of inline codeDmitry S. Dolzhenko, Feb 28, 2014
  21. Duy NguyenFeb 28, 2014
  22. Junio C HamanoFeb 28, 2014
  23. 10/11 dir.c: change create_simplify() to use ALLOC_GROW()Dmitry S. Dolzhenko, Feb 28, 2014
  24. 11/11 attr.c: change handle_attr_line() to use ALLOC_GROW()Dmitry S. Dolzhenko, Feb 28, 2014
  25. Michael HaggertyFeb 28, 2014
  26. Dmitry S. DolzhenkoMar 1, 2014
  27. Junio C HamanoMar 3, 2014
  28. 00/11 Use ALLOC_GROW() instead of inline codeDmitry S. Dolzhenko, Mar 3, 2014
  29. 01/11 builtin/pack-objects.c: use ALLOC_GROW() in check_pbase_path()Dmitry S. Dolzhenko, Mar 3, 2014
  30. 02/11 bundle.c: use ALLOC_GROW() in add_to_ref_list()Dmitry S. Dolzhenko, Mar 3, 2014
  31. 03/11 cache-tree.c: use ALLOC_GROW() in find_subtree()Dmitry S. Dolzhenko, Mar 3, 2014
  32. 04/11 commit.c: use ALLOC_GROW() in register_commit_graft()Dmitry S. Dolzhenko, Mar 3, 2014
  33. 05/11 diff.c: use ALLOC_GROW()Dmitry S. Dolzhenko, Mar 3, 2014
  34. 06/11 diffcore-rename.c: use ALLOC_GROW()Dmitry S. Dolzhenko, Mar 3, 2014
  35. 07/11 patch-ids.c: use ALLOC_GROW() in add_commit()Dmitry S. Dolzhenko, Mar 3, 2014
  36. 08/11 replace_object.c: use ALLOC_GROW() in register_replace_object()Dmitry S. Dolzhenko, Mar 3, 2014
  37. 09/11 reflog-walk.c: use ALLOC_GROW()Dmitry S. Dolzhenko, Mar 3, 2014
  38. 10/11 dir.c: use ALLOC_GROW() in create_simplify()Dmitry S. Dolzhenko, Mar 3, 2014
  39. 11/11 attr.c: use ALLOC_GROW() in handle_attr_line()Dmitry S. Dolzhenko, Mar 3, 2014
  40. Eric SunshineMar 3, 2014
  41. Junio C HamanoMar 3, 2014
  42. He SunMar 3, 2014

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.