about summary refs log tree commit diff
path: root/Src/builtin.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/builtin.c')
-rw-r--r--Src/builtin.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index 8ded1c131..299ad3758 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -5472,7 +5472,7 @@ zread(int izle, int *readchar)
 
 /* holds arguments for testlex() */
 /**/
-char **testargs;
+char **testargs, **curtestarg;
 
 /* test, [: the old-style general purpose logical expression builtin */
 
@@ -5483,7 +5483,7 @@ testlex(void)
     if (tok == LEXERR)
 	return;
 
-    tokstr = *testargs;
+    tokstr = *(curtestarg = testargs);
     if (!*testargs) {
 	/* if tok is already zero, reading past the end:  error */
 	tok = tok ? NULLTOK : LEXERR;
@@ -5557,6 +5557,11 @@ bin_test(char *name, char **argv, UNUSED(Options ops), int func)
 	return 1;
     }
 
+    if (*curtestarg) {
+	zwarnnam(name, "too many arguments");
+	return 1;
+    }
+
     /* syntax is OK, so evaluate */
 
     state.prog = prog;