I think it is cleaner like this:
root@kibar:~/procps-3.3.16# diff -u ../orig/procps-3.3.16/pgrep.c pgrep.c
--- ../orig/procps-3.3.16/pgrep.c 2020-02-06 06:04:02.000000000 -0500
+++ pgrep.c 2021-02-02 12:24:49.000000000 -0500
@@ -494,10 +494,15 @@
pid_t saved_pid = 0; /* for new/old support */
int matches = 0;
int size = 0;
+ long cmdlen, SC_ARG_MAX;
regex_t *preg;
pid_t myself = getpid();
struct el *list = NULL;
- long cmdlen = sysconf(_SC_ARG_MAX) * sizeof(char);
+ SC_ARG_MAX = sysconf(_SC_ARG_MAX);
+ if (SC_ARG_MAX == -1) // no limitations
+ cmdlen = 1000 * sizeof(char);
+ else
+ cmdlen = SC_ARG_MAX * sizeof(char);
char *cmdline = xmalloc(cmdlen);
char *cmdsearch = xmalloc(cmdlen);
char *cmdoutput = xmalloc(cmdlen);
root@kibar:~/procps-3.3.16#
Will try to send a bug report upstream... will give the link here when done.