rem: if (additional_args) args = (const char **) xmalloc (sizeof (char *) * (10 + elements (additional_args))); else args = (const char **) xmalloc (sizeof (char *) * 10);
context: run_shell (const char *shell, const char *command, char **additional_args){  const char **args;  int argno = 1;  if (additional_args)    args = (const char **) xmalloc (sizeof (char *)				    * (10 + elements (additional_args)));  else    args = (const char **) xmalloc (sizeof (char *) * 10);  if (simulate_login)    {      char *arg0;      char *shell_basename;      shell_basename = base_name (shell);      arg0 = xmalloc (strlen (shell_basename) + 2);      arg0[0] = '-';      strcpy (arg0 + 1, shell_basename);      args[0] = arg0;    }  else    args[0] = base_name (shell);  if (fast_startup)    args[argno++] = "-f";  if (command)    {      args[argno++] = "-c";      args[argno++] = command;    }  if (additional_args)    for (; *additional_args; ++additional_args)      args[argno++] = *additional_args;  args[argno] = NULL;  execv (shell, (char **) args);  {    int exit_status = (errno == ENOENT ? 127 : 126);    error (0, errno, "%s", shell);    exit (exit_status);  }}