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

Re: [PATCH v3 02/25] Convert git_snpath() to strbuf_git_path()

From: Duy Nguyen <hidden>
Date: 2016-06-15 22:59:57

On Thu, Feb 20, 2014 at 6:48 AM, Junio C Hamano [off-list ref] wrote:
Nguyễn Thái Ngọc Duy  [off-list ref] writes:
quoted
@@ -651,14 +653,10 @@ static void update_refs_for_switch(const struct checkout_opts *opts,
                                      new->name);
                      }
              }
-             if (old->path && old->name) {
-                     char log_file[PATH_MAX], ref_file[PATH_MAX];
-
-                     git_snpath(log_file, sizeof(log_file), "logs/%s", old->path);
-                     git_snpath(ref_file, sizeof(ref_file), "%s", old->path);
-                     if (!file_exists(ref_file) && file_exists(log_file))
-                             remove_path(log_file);
-             }
+             if (old->path && old->name &&
+                 !file_exists(git_path("%s", old->path)) &&
+                  file_exists(git_path("logs/%s", old->path)))
+                     remove_path(git_path("logs/%s", old->path));
Hmph.  Is this conversion safe?

This adds three uses of the round-robin path buffer; if a caller of
this function used two or more path buffers obtained from
get_pathname() and expected their contents to remain stable across
the call to this, it will silently break.
three round-robin buffers but not all required at the same time, once
the first file_exists() returns the first round-robin buffer could be
free, and remove_path() calls git_path again, not reusing the result
from the second file_exists, so the second buffer is free to go too.
-- 
Duy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help