in win_unicode.c [1245:1283]
SQLLEN bindcol_localize_estimate(const char *utf8dt, BOOL lf_conv, char **wcsbuf)
{
SQLLEN l = (-2);
char *convalc = NULL;
get_convtype();
MYLOG(MIN_LOG_LEVEL, " lf_conv=%d\n", lf_conv);
#if defined(__WCS_ISO10646__)
if (use_wcs)
{
wchar_t *wcsalc = NULL;
l = utf8_to_wcs_lf(utf8dt, -1, lf_conv, NULL, 0, FALSE);
wcsalc = (wchar_t *) malloc(sizeof(wchar_t) * (l + 1));
convalc = (char *) wcsalc;
l = utf8_to_wcs_lf(utf8dt, -1, lf_conv, wcsalc, l + 1, FALSE);
l = wstrtomsg(wcsalc, NULL, 0);
}
#endif /* __WCS_ISO10646__ */
#ifdef __CHAR16_UTF_16__
if (use_c16)
{
SQLWCHAR *wcsalc = NULL;
l = utf8_to_ucs2_lf(utf8dt, -1, lf_conv, (SQLWCHAR *) NULL, 0, FALSE);
wcsalc = (SQLWCHAR *) malloc(sizeof(SQLWCHAR) * (l + 1));
convalc = (char *) wcsalc;
l = utf8_to_ucs2_lf(utf8dt, -1, lf_conv, wcsalc, l + 1, FALSE);
l = c16tombs(NULL, (char16_t *) wcsalc, 0);
}
#endif /* __CHAR16_UTF_16__ */
if (l < 0 && NULL != convalc)
free(convalc);
else if (NULL != convalc)
*wcsbuf = (char *) convalc;
MYLOG(MIN_LOG_LEVEL, " return=" FORMAT_LEN "\n", l);
return l;
}