patch 7.4.1464
Problem: When the argument of sort() is zero or empty it fails.
Solution: Make zero work as documented. (suggested by Yasuhiro Matsumoto)
diff --git a/src/eval.c b/src/eval.c
index a45b71d..7d28e71 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -19195,11 +19195,21 @@
goto theend; /* type error; errmsg already given */
if (i == 1)
info.item_compare_ic = TRUE;
- else
+ else if (argvars[1].v_type != VAR_NUMBER)
info.item_compare_func = get_tv_string(&argvars[1]);
+ else if (i != 0)
+ {
+ EMSG(_(e_invarg));
+ goto theend;
+ }
if (info.item_compare_func != NULL)
{
- if (STRCMP(info.item_compare_func, "n") == 0)
+ if (*info.item_compare_func == NUL)
+ {
+ /* empty string means default sort */
+ info.item_compare_func = NULL;
+ }
+ else if (STRCMP(info.item_compare_func, "n") == 0)
{
info.item_compare_func = NULL;
info.item_compare_numeric = TRUE;