if (__wcsmbs_last_locale != new_category)
if (__builtin_expect (__wcsmbs_last_locale != new_category, 1))
__wcsmbs_load_conv (const struct locale_data *new_category){  /* Acquire the lock.  */  __libc_lock_lock (lock);  /* We should repeat the test since while we waited some other thread     might have run this function.  */  if (__wcsmbs_last_locale != new_category)    {      if (new_category->name == _nl_C_name)	/* Yes, pointer comparison.  */	{	failed:	  __wcsmbs_gconv_fcts.towc = &to_wc;	  __wcsmbs_gconv_fcts.tomb = &to_mb;	}      else	{	  /* We must find the real functions.  */	  const char *charset_name;	  const char *complete_name;	  struct __gconv_step *new_towc;	  struct __gconv_step *new_tomb;	  /* Free the old conversions.  */	  __gconv_close_transform (__wcsmbs_gconv_fcts.tomb, 1);	  __gconv_close_transform (__wcsmbs_gconv_fcts.towc, 1);	  /* Get name of charset of the locale.  */	  charset_name = new_category->values[_NL_ITEM_INDEX(CODESET)].string;	  /* Normalize the name and add the slashes necessary for a             complete lookup.  */	  complete_name = norm_add_slashes (charset_name);	  new_towc = getfct ("INTERNAL", complete_name);	  if (new_towc != NULL)	    new_tomb = getfct (complete_name, "INTERNAL");	  /* If any of the conversion functions is not available we don't	     use any since this would mean we cannot convert back and	     forth.*/	  if (new_towc == NULL || new_tomb == NULL)	    {	      if (new_towc != NULL)		__gconv_close_transform (new_towc, 1);	      goto failed;	    }	  __wcsmbs_gconv_fcts.tomb = new_tomb;	  __wcsmbs_gconv_fcts.towc = new_towc;	}      /* Set last-used variable for current locale.  */      __wcsmbs_last_locale = new_category;    }  __libc_lock_unlock (lock);}