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

Re: [PATCH v2 2/3] strbuf: set errno to 0 after strbuf_getcwd

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 5, 2024, 15:51 UTC
Message-ID
<xmqqv80f3r3d.fsf@gitster.g>
In-Reply-To
<CAPig+cTmzk7AN2x8-WCK_T5-_G7Wd-akB2++_4HFEbT67Rnc8A@mail.gmail.com>
Eric Sunshine <sunshine@sunshineco.com> writes:
Show 26 quoted lines
> On Fri, Aug 2, 2024 at 5:32 PM Junio C Hamano <gitster@pobox.com> wrote:
>> > [...]
>> > Set `errno = 0;` prior to exiting from `strbuf_getcwd` successfully.
>> > This matches the behavior in functions like `run_transaction_hook`
>> > (refs.c:2176) and `read_ref_internal` (refs/files-backend.c:564).
>>
>> I am still uneasy to see this unconditional clearing, which looks
>> more like spreading the bad practice from two places you identified
>> than following good behaviour modelled after these two places.
>>
>> But I'll let it pass.
>>
>> As long as our programmers understand that across strbuf_getcwd(),
>> errno will *not* be preserved, even if the function returns success,
>> it would be OK.  As the usual convention around errno is that a
>> successful call would leave errno intact, not clear it to 0, it
>> would make it a bit harder to learn our API for newcomers, though.
>
> For what it's worth, I share your misgivings about this change and
> consider the suggestion[*] to make it save/restore `errno` upon
> success more sensible. It would also be a welcome change to see the
> function documentation in strbuf.h updated to mention that it follows
> the usual convention of leaving `errno` untouched upon success and
> clobbered upon error.
>
> [*]: https://lore.kernel.org/git/xmqqv80jeza5.fsf@gitster.g/

Yup, of course save/restore would be safer, and probably easier to reason about for many people.

Thanks.
Previous: Eric SunshineNext: Patrick Steinhardt
Message 17 of 29 in “Small fixes for issues detected during internal CI runs”
  1. 0/3 Small fixes for issues detected during internal CI runsKyle Lippincott via GitGitGadget, Aug 2, 2024
  2. 1/3 set errno=0 before strtoX callsKyle Lippincott via GitGitGadget, Aug 2, 2024
  3. Patrick SteinhardtAug 2, 2024
  4. Kyle LippincottAug 2, 2024
  5. Junio C HamanoAug 2, 2024
  6. 2/3 strbuf: set errno to 0 after strbuf_getcwdKyle Lippincott via GitGitGadget, Aug 2, 2024
  7. Junio C HamanoAug 2, 2024
  8. Kyle LippincottAug 2, 2024
  9. 3/3 t6421: fix test to work when repo dir contains d0Kyle Lippincott via GitGitGadget, Aug 2, 2024
  10. Junio C HamanoAug 2, 2024
  11. 0/3 Small fixes for issues detected during internal CI runsKyle Lippincott via GitGitGadget, Aug 2, 2024
  12. 1/3 set errno=0 before strtoX callsKyle Lippincott via GitGitGadget, Aug 2, 2024
  13. Junio C HamanoAug 2, 2024
  14. 2/3 strbuf: set errno to 0 after strbuf_getcwdKyle Lippincott via GitGitGadget, Aug 2, 2024
  15. Junio C HamanoAug 2, 2024
  16. Eric SunshineAug 2, 2024
  17. Junio C HamanoAug 5, 2024
  18. Patrick SteinhardtAug 6, 2024
  19. Kyle LippincottAug 6, 2024
  20. Kyle LippincottAug 2, 2024
  21. Kyle LippincottAug 5, 2024
  22. 3/3 t6421: fix test to work when repo dir contains d0Kyle Lippincott via GitGitGadget, Aug 2, 2024
  23. Junio C HamanoAug 2, 2024
  24. Kyle LippincottAug 3, 2024
  25. Junio C HamanoAug 3, 2024
  26. 0/2 Small fixes for issues detected during internal CI runsKyle Lippincott via GitGitGadget, Aug 5, 2024
  27. 1/2 set errno=0 before strtoX callsKyle Lippincott via GitGitGadget, Aug 5, 2024
  28. 2/2 t6421: fix test to work when repo dir contains d0Kyle Lippincott via GitGitGadget, Aug 5, 2024
  29. Junio C HamanoAug 5, 2024

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.