summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordana <dana@dana.is>2019-02-03 11:55:40 -0600
committerdana <dana@dana.is>2019-02-03 11:55:40 -0600
commited4c8f3d5e233e654f00cc52949b46b48191a332 (patch)
tree56b32afb0d125a85a737ab0431ee428d4175ff1c
parent4f6ac08af3ffd9ce13912a50cbeed6546a2440e6 (diff)
downloadzsh-ed4c8f3d5e233e654f00cc52949b46b48191a332.tar.gz
zsh-ed4c8f3d5e233e654f00cc52949b46b48191a332.zip
44030: prompt: Return error for unrecognised colour name
-rw-r--r--ChangeLog5
-rw-r--r--Src/prompt.c2
-rw-r--r--Test/D01prompt.ztst8
3 files changed, 15 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 0fa26a580..1d8537321 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2019-02-03 dana <dana@dana.is>
+
+ * 44030: Src/prompt.c, Test/D01prompt.ztst: Return error for
+ unrecognised colour name
+
2019-01-28 Fredric Silberberg <fred@silberberg.xyz>
* github #32: Completion/Unix/Command/_git: Fix a typo in the
diff --git a/Src/prompt.c b/Src/prompt.c
index 4603ffba6..f2b3f161e 100644
--- a/Src/prompt.c
+++ b/Src/prompt.c
@@ -1663,6 +1663,8 @@ match_colour(const char **teststrp, int is_fg, int colour)
/* default */
return is_fg ? TXTNOFGCOLOUR : TXTNOBGCOLOUR;
}
+ if (colour < 0)
+ return TXT_ERROR;
}
else {
colour = (int)zstrtol(*teststrp, (char **)teststrp, 10);
diff --git a/Test/D01prompt.ztst b/Test/D01prompt.ztst
index 56b7c294a..7ff478e68 100644
--- a/Test/D01prompt.ztst
+++ b/Test/D01prompt.ztst
@@ -221,3 +221,11 @@
print ${(%U)Y-%(v}
0:Regression test for test on empty psvar
>
+
+# Unrecognised colour strings should produce the default sequence
+ f=${(%):-'%f'} # Recognised
+ Fdefault=${(%):-'%F{default}'} # Recognised
+ Freset=${(%):-'%F{reset}'} # Unrecognised
+ Ffoo=${(%):-'%F{foo}'} # Unrecognised
+ [[ $f == $Fdefault && $Fdefault == $Freset && $Freset == $Ffoo ]]
+0:Regression test for workers/44029