if (idx < MAX_CHARNAMES_IDX) ctype->charnames_idx[idx] = cnt;
find_idx (struct locale_ctype_t *ctype, uint32_t **table, size_t *max,	  size_t *act, uint32_t idx){  size_t cnt;  if (idx < 256)    return table == NULL ? NULL : &(*table)[idx];  for (cnt = 256; cnt < ctype->charnames_act; ++cnt)    if (ctype->charnames[cnt] == idx)      break;  /* We have to distinguish two cases: the name is found or not.  */  if (cnt == ctype->charnames_act)    {      /* Extend the name array.  */      if (ctype->charnames_act == ctype->charnames_max)	{	  ctype->charnames_max *= 2;	  ctype->charnames = (uint32_t *)	    xrealloc (ctype->charnames,		      sizeof (uint32_t) * ctype->charnames_max);	}      ctype->charnames[ctype->charnames_act++] = idx;    }  if (table == NULL)    /* We have done everything we are asked to do.  */    return NULL;  if (cnt >= *act)    {      if (cnt >= *max)	{	  size_t old_max = *max;	  do	    *max *= 2;	  while (*max <= cnt);	  *table =	    (uint32_t *) xrealloc (*table, *max * sizeof (uint32_t));	  memset (&(*table)[old_max], '\0',		  (*max - old_max) * sizeof (uint32_t));	}      *act = cnt + 1;    }  return &(*table)[cnt];}