From 63979488e6da43cffec348b65c7740352ea81f12 Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Tue, 2 Feb 2021 15:19:13 +0000 Subject: [PATCH] command -x: fix 'arg list too long' on Linux (re: 66e1d446) I got one intermittent regression test failure due to 'argument list too long' on a Debian x86_64 system. src/cmd/ksh93/sh/path.c: path_xargs(): - Leave extra argument space for systems that need extra bytes: 1KiB per extra byte, with a minimum of 2KiB (the old value). --- src/cmd/ksh93/sh/path.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/ksh93/sh/path.c b/src/cmd/ksh93/sh/path.c index b9d30ed0f70c..af9ca2d4f2c0 100644 --- a/src/cmd/ksh93/sh/path.c +++ b/src/cmd/ksh93/sh/path.c @@ -162,7 +162,7 @@ static pid_t path_xargs(Shell_t *shp,const char *path, char *argv[],char *const pid_t pid; if(shp->xargmin < 0) return((pid_t)-1); - size = shp->gd->lim.arg_max-2048; + size = shp->gd->lim.arg_max - (ARG_EXTRA_BYTES > 2 ? 1024*ARG_EXTRA_BYTES : 2048); for(ev=envp; cp= *ev; ev++) size -= strlen(cp) + 1 + ARG_EXTRA_BYTES; for(av=argv; (cp= *av) && av< &argv[shp->xargmin]; av++)