struct _IO_codecvt *cc = &fp->_codecvt;
struct _IO_codecvt *cc = fp->_codecvt;
_IO_new_fclose (fp)     _IO_FILE *fp;{  int status;  CHECK_FILE(fp, EOF);#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)  /* We desperately try to help programs which are using streams in a     strange way and mix old and new functions.  Detect old streams     here.  */  if (fp->_vtable_offset != 0)    return _IO_old_fclose (fp);#endif  _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);  _IO_flockfile (fp);  if (fp->_IO_file_flags & _IO_IS_FILEBUF)    status = _IO_file_close_it (fp);  else    status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;  _IO_FINISH (fp);  _IO_funlockfile (fp);  if (fp->_mode > 0)    {#if _LIBC      /* This stream has a wide orientation.  This means we have to free	 the conversion functions.  */      struct _IO_codecvt *cc = &fp->_codecvt;      if (cc->__cd_in.__cd.__steps->__shlib_handle != NULL)	{	  --cc->__cd_in.__cd.__steps->__counter;	  __gconv_close_transform (cc->__cd_in.__cd.__steps, 1);	}      if (cc->__cd_out.__cd.__steps->__shlib_handle != NULL)	{	  --cc->__cd_out.__cd.__steps->__counter;	  __gconv_close_transform (cc->__cd_out.__cd.__steps, 1);	}#endif    }  _IO_cleanup_region_end (0);  if (_IO_have_backup (fp))    _IO_free_backup_area (fp);  if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr)    {      fp->_IO_file_flags = 0;      free(fp);    }  return status;}