[PATCH] Fix make_absolute_path() for parameters without a slash

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When passing "xyz" to make_absolute_path(), make_absolute_path()
erroneously tried to chdir("xyz"), and then append "/xyz".  Instead,
skip the chdir() completely when no slash was found.

Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx>
---

On Sun, 2 Mar 2008, Johannes Schindelin wrote:

> Will stop posting patches for today, and fix tomorrow.

It was just too embarassing.

 path.c           |    4 +++-
 t/t0000-basic.sh |    2 ++
 2 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/path.c b/path.c
index 4260952..af27161 100644
--- a/path.c
+++ b/path.c
@@ -311,8 +311,10 @@ const char *make_absolute_path(const char *path)
 			if (last_slash) {
 				*last_slash = '\0';
 				last_elem = xstrdup(last_slash + 1);
-			} else
+			} else {
 				last_elem = xstrdup(buf);
+				*buf = '\0';
+			}
 		}
 
 		if (*buf) {
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 92de088..27b54cb 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -304,6 +304,8 @@ test_expect_success 'absolute path works as expected' '
 	test "$dir" = "$(test-absolute-path $dir2)" &&
 	file="$dir"/index &&
 	test "$file" = "$(test-absolute-path $dir2/index)" &&
+	basename=blub &&
+	test "$dir/$basename" = $(cd .git && test-absolute-path $basename) &&
 	ln -s ../first/file .git/syml &&
 	sym="$(cd first; pwd -P)"/file &&
 	test "$sym" = "$(test-absolute-path $dir2/syml)"
-- 
1.5.4.3.446.gbe8932

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux