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

Re: [PATCH v4 2/4] add-patch: modify patch_update_file() signature

From
Samuel Abraham <abrahamadekunle50@gmail.com>
Date
Feb 14, 2026, 10:14 UTC
Message-ID
<CADYq+fa=-V9_gTpPRUvCDwFDShrUuxBqojOM+JSo_AvfvAJR7Q@mail.gmail.com>
In-Reply-To
<xmqqms1ci5g8.fsf@gitster.g>
On Sat, Feb 14, 2026 at 12:34 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 43 quoted lines
>
> Abraham Samuel Adekunle <abrahamadekunle50@gmail.com> writes:
>
> > -static int patch_update_file(struct add_p_state *s,
> > -                          struct file_diff *file_diff)
> > +static ssize_t patch_update_file(struct add_p_state *s, size_t idx)
>
> Why ssize_t?  Are we going to handle that many hunks that we do not
> expect to fit in a platform natural "int" type?  If we are not doing
> anything about "idx" being more than half the type, which apparently
> is the case ...
>
> >  {
> >       size_t hunk_index = 0;
> >       ssize_t i, undecided_previous, undecided_next, rendered_hunk_index = -1;
> >       struct hunk *hunk;
> >       char ch;
> >       struct child_process cp = CHILD_PROCESS_INIT;
> > -     int colored = !!s->colored.len, quit = 0, use_pager = 0;
> > +     int colored = !!s->colored.len, use_pager = 0;
> >       enum prompt_mode_type prompt_mode_type;
> > +     struct file_diff *file_diff = s->file_diff + idx;
> > +     ssize_t patch_update_resp = (ssize_t)idx;
>
> ... with the cast that is not checked here, wouldn't it make sense
> to just use the platform natural "int" everywhere?  Your code is not
> "safe" either way.  I do not think we expect to handle 2 billion
> hunks, so even on 32-bit platforms, platform natural "int" should be
> plenty.  Instead of religiously using size_t and ssize_t to count
> things without extra care, I'd rather see us check the error
> condition for real, if that is what we really care about (and that
> can still be done while leaving the codebase cleaner by sticking to
> the platform natural "int").
>
> Enough ranting.  Anyway.
>
> If we really are bothered that we cannot handle 3 billion hunks, we
> could avoid losing half the number range by returning
> s->file_diff.file_diff_nr (which is one more than there are elements
> in s->file_diff[] array) or ((size_t)-1).  That would allow us to
> return size_t from here.  I care about this a bit more than "why use
> size_t when int is perfectly fine", because some platforms that are
> not quite POSIX can have ssize_t that is not as wide as size_t.

Hello Junio. Thank you for the review.

I wanted to be able to return a negative value while also making sure to return a type of the same size as "i" since that is what we use to update the caller for the next or previous "i". But I know better now to think about platforms that are not quite POSIX. I will return the s->file_diff_nr and check for that instead.

Thanks Abraham

Previous: Junio C HamanoNext: Abraham Samuel Adekunle
Message 45 of 54 in “add-patch: Allow reworking with a file after deciding on its hunks”
  1. 0/1 add-patch: Allow reworking with a file after deciding on its hunksAbraham Samuel Adekunle, Jan 23, 2026
  2. 1/1 add-patch: Allow reworking with a file after deciding on all its hunksAbraham Samuel Adekunle, Jan 23, 2026
  3. Junio C HamanoJan 23, 2026
  4. Samuel AbrahamJan 23, 2026
  5. 0/1 Allow reworking with a file when making hunk decisionsAbraham Samuel Adekunle, Jan 27, 2026
  6. 1/1 Allow reworking with a file after deciding on all its hunksAbraham Samuel Adekunle, Jan 27, 2026
  7. Junio C HamanoJan 27, 2026
  8. Samuel AbrahamJan 28, 2026
  9. Samuel AbrahamJan 30, 2026
  10. Junio C HamanoJan 30, 2026
  11. Samuel AbrahamJan 30, 2026
  12. Junio C HamanoJan 31, 2026
  13. Samuel AbrahamFeb 2, 2026
  14. Junio C HamanoFeb 2, 2026
  15. Samuel AbrahamFeb 3, 2026
  16. Junio C HamanoJan 27, 2026
  17. Samuel AbrahamJan 28, 2026
  18. 0/3 introduce new option `rework-with-file`Abraham Samuel Adekunle, Feb 6, 2026
  19. 1/3 interactive -p: add new `--rework-with-file` flag to interactive machineryAbraham Samuel Adekunle, Feb 6, 2026
  20. Junio C HamanoFeb 6, 2026
  21. Samuel AbrahamFeb 6, 2026
  22. 2/3 add-patch: Allow interfile navigation when selecting hunksAbraham Samuel Adekunle, Feb 6, 2026
  23. Junio C HamanoFeb 6, 2026
  24. Samuel AbrahamFeb 6, 2026
  25. Junio C HamanoFeb 6, 2026
  26. Samuel AbrahamFeb 6, 2026
  27. Junio C HamanoFeb 6, 2026
  28. Samuel AbrahamFeb 6, 2026
  29. Samuel AbrahamFeb 12, 2026
  30. Junio C HamanoFeb 12, 2026
  31. Samuel AbrahamFeb 12, 2026
  32. Junio C HamanoFeb 12, 2026
  33. Samuel AbrahamFeb 12, 2026
  34. 3/3 add-patch: Allow proper 'git apply' when using the --rework-with-file flagAbraham Samuel Adekunle, Feb 6, 2026
  35. Junio C HamanoFeb 6, 2026
  36. Samuel AbrahamFeb 6, 2026
  37. Junio C HamanoFeb 6, 2026
  38. Samuel AbrahamFeb 6, 2026
  39. 0/4 introduce new option `--auto-advance`Abraham Samuel Adekunle, Feb 13, 2026
  40. 1/4 interactive -p: add new `--auto-advance` flagAbraham Samuel Adekunle, Feb 13, 2026
  41. Junio C HamanoFeb 13, 2026
  42. Samuel AbrahamFeb 14, 2026
  43. 2/4 add-patch: modify patch_update_file() signatureAbraham Samuel Adekunle, Feb 13, 2026
  44. Junio C HamanoFeb 13, 2026
  45. Samuel AbrahamFeb 14, 2026
  46. 3/4 add-patch: allow all-or-none application of patchesAbraham Samuel Adekunle, Feb 13, 2026
  47. 4/4 add-patch: allow interfile navigation when selecting hunksAbraham Samuel Adekunle, Feb 13, 2026
  48. 0/4 introduce new option `--auto-advance`Abraham Samuel Adekunle, Feb 14, 2026
  49. 1/4 interactive -p: add new `--auto-advance` flagAbraham Samuel Adekunle, Feb 14, 2026
  50. 2/4 add-patch: modify patch_update_file() signatureAbraham Samuel Adekunle, Feb 14, 2026
  51. 3/4 add-patch: allow all-or-none application of patchesAbraham Samuel Adekunle, Feb 14, 2026
  52. 4/4 add-patch: allow interfile navigation when selecting hunksAbraham Samuel Adekunle, Feb 14, 2026
  53. Junio C HamanoFeb 20, 2026
  54. Samuel AbrahamFeb 21, 2026

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.