* [PATCH] check_file_directory_conflict path fix
@ 2005-05-27 2:59 David Meybohm
0 siblings, 0 replies; only message in thread
From: David Meybohm @ 2005-05-27 2:59 UTC (permalink / raw)
To: git
check_file_directory_conflict can give the wrong answers. This is
because the wrong length is passed to cache_name_pos. The length
passed should be the length of the whole path from the root, not
the length of each path subcomponent.
$ git-init-db
defaulting to local storage area
$ mkdir path && touch path/file
$ git-update-cache --add path/file
$ rm path/file
$ mkdir path/file && touch path/file/f
$ git-update-cache --add path/file/f <-- Conflict ignored
$
Signed-off-by: David Meybohm <dmeybohmlkml@bellsouth.net>
---
Index: read-cache.c
===================================================================
--- ca5fef50fb68a3afbb35e1a48ac622f7a964f021/read-cache.c (mode:100644)
+++ uncommitted/read-cache.c (mode:100644)
@@ -172,11 +172,13 @@
cp = pathbuf;
while (1) {
char *ep = strchr(cp, '/');
+ int len;
if (!ep)
break;
*ep = 0; /* first cut it at slash */
+ len = ep - pathbuf;
pos = cache_name_pos(pathbuf,
- htons(create_ce_flags(ep-cp, stage)));
+ htons(create_ce_flags(len, stage)));
if (0 <= pos) {
/* Our leading path component is registered as a file,
* and we are trying to make it a directory. This is
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-05-27 2:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-27 2:59 [PATCH] check_file_directory_conflict path fix David Meybohm
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).