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

Re: [PATCH] Fix handle leak in write_tree

From
Alex Riesen <raa.lkml@gmail.com>
Date
Apr 24, 2007, 09:30 UTC
Message-ID
<81b0412b0704240230x3a5b473k5da3d45d9c997c3b@mail.gmail.com>
In-Reply-To
<7vps5u9wsk.fsf@assigned-by-dhcp.cox.net>
On 4/24/07, Junio C Hamano <junkio@cox.net> wrote:
Show 23 quoted lines
> > How about something like this (just interface):
> >
> > struct lock_file
> > {
> >       struct lock_file *next;
> >       pid_t owner;
> >       int fd;
> >       char on_list;
> >       char filename[PATH_MAX];
> > };
> >
> > struct lock_file *open_locked(const char *path, int die_on_error);
> > struct lock_file *open_index_locked(int die_on_error);
> > void commit_lock_file(struct lock_file *); /* always assuming .lock */
> > void rollback_lock_file(struct lock_file *);
>
> I agree that making commit and rollback close the file
> descriptor and lock holders to use lock->fd for write() makes
> more sense, although it is a bit unclear from the above set of
> function signatures what your plan on the lifetime rule for
> "struct lock_file" is.  If it will be linked to the list given
> to the atexit() handler and the caller of open_locked() never
> frees it, I think I am fine with the interface.

I actually expected the caller to define the lifetime. atexit is not exactly libification-effort friendly. I could imagine open*locked with an additional argument for atexit registration, I just don't like the idea (dislike die_on_error too). Isn't such kind of resource control _generally_ nicer to implement in the top levels of a program?

Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 7 in “Fix handle leak in write_tree”
  1. Fix handle leak in write_treeAlex Riesen, Apr 23, 2007
  2. Junio C HamanoApr 24, 2007
  3. Alex RiesenApr 24, 2007
  4. Junio C HamanoApr 24, 2007
  5. Alex RiesenApr 25, 2007
  6. Junio C HamanoApr 25, 2007
  7. Fix handle leak in write_treeAlex Riesen, Apr 25, 2007

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.