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

Re: [RFC][PATCH] t-prio-queue: simplify using compound literals

From
Jeff King <peff@peff.net>
Date
Apr 7, 2024, 01:28 UTC
Message-ID
<20240407012844.GC1085004@coredump.intra.peff.net>
In-Reply-To
<xmqqedbjtqnr.fsf@gitster.g>
On Fri, Apr 05, 2024 at 03:01:44PM -0700, Junio C Hamano wrote:
Show 11 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > Yeah, this seems pretty reasonable. I think we've traditionally been
> > hesitant to pass or return structs by value, but that's mostly
> > superstition.
> 
> We should still be hesitant against the practice to the same degree
> that we are hesitant against struct assignment, especially when the
> struct is of nontrivial size, or the struct has a pointer member
> whose memory ownership semantics goes against shallow copying of the
> struct.

Good point. There are really two thresholds: is this something that should be totally forbidden, and is this something that is generally a good idea. I think the answers here are "no" and "yes" respectively.

It is an OK solution for "plain old data" types like date_mode that are essentially just marshalling arguments, but not for more object-oriented code that might have ownership over pointers.

> In this particular case, I do not know offhand if .strftime_fmt is
> safe to be shallowly copied, but I trust you two know and/or have
> already looked at the implications.

René already went through each caller, but yeah, I think it is fine here. This whole thing is just a convenience over having callers pass around a separated (enum, strftime_fmt, local) triple.

-Peff
Previous: René ScharfeNext: Junio C Hamano
Message 8 of 11 in “t-prio-queue: simplify using compound literals”
  1. René ScharfeApr 2, 2024
  2. Junio C HamanoApr 2, 2024
  3. Jeff KingApr 2, 2024
  4. René ScharfeApr 5, 2024
  5. Jeff KingApr 5, 2024
  6. Junio C HamanoApr 5, 2024
  7. René ScharfeApr 6, 2024
  8. Jeff KingApr 7, 2024
  9. Junio C HamanoApr 8, 2024
  10. Jeff KingApr 8, 2024
  11. Josh SteadmonApr 11, 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.