if (*grouping == CHAR_MAX || *grouping < 0)
if (*grouping == CHAR_MAX || *grouping <= 0)
group_number (CHAR_T *w, CHAR_T *rear_ptr, const CHAR_T *grouping,	      wchar_t thousands_sep){  int len;  char *src, *s;  /* We treat all negative values like CHAR_MAX.  */  if (*grouping == CHAR_MAX || *grouping < 0)    /* No grouping should be done.  */    return w;  len = *grouping;  /* Copy existing string so that nothing gets overwritten.  */  src = (char *) alloca (rear_ptr - w);  memcpy (src, w + 1, rear_ptr - w);  s = &src[rear_ptr - w - 1];  w = rear_ptr;  /* Process all characters in the string.  */  while (s >= src)    {      *w-- = *s--;      if (--len == 0 && s >= src)	{	  /* A new group begins.  */	  *w-- = thousands_sep;	  len = *grouping++;	  if (*grouping == '\0')	    /* The previous grouping repeats ad infinitum.  */	    --grouping;	  else if (*grouping == CHAR_MAX || *grouping < 0)	    {	      /* No further grouping to be done.		 Copy the rest of the number.  */	      do		*w-- = *s--;	      while (s >= src);	      break;	    }	}    }  return w;}