+ gconv_path_len + nelems);
+ gconv_path_len + nelems + (nelems - 1) * (cwdlen + 1));
__gconv_get_path (void){  struct path_elem *result;  __libc_lock_define_initialized (static, lock);  __libc_lock_lock (lock);  /* Make sure there wasn't a second thread doing it already.  */  result = (struct path_elem *) __gconv_path_elem;  if (result == NULL)    {      /* Determine the complete path first.  */      const char *user_path;      char *gconv_path;      size_t gconv_path_len;      char *elem;      char *oldp;      char *cp;      int nelems;      user_path = __secure_getenv ("GCONV_PATH");      if (user_path == NULL)	{	  /* No user-defined path.  Make a modifiable copy of the	     default path.  */	  gconv_path = strdupa (default_gconv_path);	  gconv_path_len = sizeof (default_gconv_path);	}      else	{	  /* Append the default path to the user-defined path.  */	  size_t user_len = strlen (user_path);	  gconv_path_len = user_len + 1 + sizeof (default_gconv_path);	  gconv_path = alloca (gconv_path_len);	  __mempcpy (__mempcpy (__mempcpy (gconv_path, user_path, user_len),				":", 1),		     default_gconv_path, sizeof (default_gconv_path));	}      /* In a first pass we calculate the number of elements.  */      oldp = NULL;      cp = strchr (gconv_path, ':');      nelems = 1;      while (cp != NULL)	{	  if (cp != oldp + 1)	    ++nelems;	  oldp = cp;	  cp =  strchr (cp + 1, ':');	}      /* Allocate the memory for the result.  */      result = (struct path_elem *) malloc ((nelems + 1)					    * sizeof (struct path_elem)					    + gconv_path_len + nelems);      if (result != NULL)	{	  char *strspace = (char *) &result[nelems + 1];	  int n = 0;	  /* Separate the individual parts.  */	  __gconv_max_path_elem_len = 0;	  elem = __strtok_r (gconv_path, ":", &gconv_path);	  assert (elem != NULL);	  do	    {	      result[n].name = strspace;	      strspace = __stpcpy (strspace, elem);	      if (strspace[-1] != '/')		*strspace++ = '/';	      result[n].len = strspace - result[n].name;	      if (result[n].len > __gconv_max_path_elem_len)		__gconv_max_path_elem_len = result[n].len;	      *strspace++ = '\0';	      ++n;	    }	  while ((elem = __strtok_r (NULL, ":", &gconv_path)) != NULL);	  result[n].name = NULL;	  result[n].len = 0;	}      __gconv_path_elem = result ?: &empty_path_elem;    }  __libc_lock_unlock (lock);}