Thread (2 messages) 2 messages, 2 authors, 2016-06-15

Re: [PATCH 2/3] prune_object_dir(): verify that path fits in the temporary buffer

From: Jeff King <hidden>
Date: 2016-06-15 22:59:29

On Wed, Dec 18, 2013 at 11:35:34AM -0800, Junio C Hamano wrote:
This function is called to remove

 * Any tmp_* found directly in .git/objects/
 * Any tmp_* found directly in .git/objects/pack/
 * Any tmp_obj_* found directly in .git/objects/??/

and shares the same expiration logic with prune_object().  The only
difference from the other function is what the file is called in
dry-run or verbose report ("stale temporary file" vs "<sha-1> <typename>").

We may want to rename it to prune_tmp_file(); its usage may have
been limited to an unborn loose object file at some point in the
history, but it does not look that way in today's code.
Yes, certainly the rename makes sense (and I think the history is as you
mentioned). I noticed the similarity between the two, as well. It might
be simple to refactor into a single function.
quoted
-			prune_object(path, de->d_name, sha1);
+			strbuf_addf(path, "/%s", de->d_name);
+			prune_object(path->buf, sha1);
+			path->len = baselen;
This is minor, but I prefer using strbuf_setlen() for this.
Good catch. I do not think it is minor at all; my version is buggy.
After the loop ends, path->len does not match the NUL in path->buf. That
is OK if the next caller is strbuf-aware, but if it were to pass
path->buf straight to a system call, that would be rather...confusing.

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help