break; }
comm = w_addchar (comm, &comm_length, &comm_maxlen, words[*offset]); if (comm == NULL) return WRDE_NOSPACE;
parse_comm (char **word, size_t *word_length, size_t *max_length,	    const char *words, size_t *offset, int flags, wordexp_t *pwordexp,	    const char *ifs, const char *ifs_white){  /* We are poised just after "$(" */  int paren_depth = 1;  int error;  size_t comm_length = 0;  size_t comm_maxlen = 0;  char *comm = NULL;  for (; words[*offset]; ++(*offset))    {      switch (words[*offset])	{	case ')':	  if (--paren_depth == 0)	    {	      /* Go -- give script to the shell */	      error = exec_comm (comm, word, word_length, max_length, flags,				 pwordexp, ifs, ifs_white);	      free (comm);	      return error;	    }	  /* This is just part of the script */	  comm = w_addchar (comm, &comm_length, &comm_maxlen, words[*offset]);	  if (comm == NULL)	    return WRDE_NOSPACE;	  break;	case '(':	  ++paren_depth;	default:	  comm = w_addchar (comm, &comm_length, &comm_maxlen, words[*offset]);	  if (comm == NULL)	    return WRDE_NOSPACE;	  break;	}    }  /* Premature end */  free (comm);  return WRDE_SYNTAX;}