aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/basename.test3
-rw-r--r--toys/posix/basename.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/tests/basename.test b/tests/basename.test
index 9d3b2961..ab2cc20a 100755
--- a/tests/basename.test
+++ b/tests/basename.test
@@ -21,3 +21,6 @@ testing "reappearing suffix 2" "basename a.txt.old .txt" "a.txt.old\n" "" ""
# A suffix should be a real suffix, only a the end.
testing "invalid suffix" "basename isthisasuffix? suffix" "isthisasuffix?\n" "" ""
+
+# Zero-length suffix
+testing "zero-length suffix" "basename a/b/c ''" "c\n" "" ""
diff --git a/toys/posix/basename.c b/toys/posix/basename.c
index 1a27a23b..c123cc79 100644
--- a/toys/posix/basename.c
+++ b/toys/posix/basename.c
@@ -23,7 +23,7 @@ void basename_main(void)
char *base = basename(*toys.optargs), *suffix = toys.optargs[1];
// chop off the suffix if provided
- if (suffix) {
+ if (suffix && *suffix) {
long bl = strlen(base), sl = strlen(suffix);
char *s = base + bl - sl;