mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-24 07:23:03 +01:00
Patch by Dmitry Kovalenko for CORE-1596
This commit is contained in:
parent
d45449ef72
commit
608fa01368
@ -117,19 +117,18 @@ public:
|
|||||||
if (cnvt2)
|
if (cnvt2)
|
||||||
{
|
{
|
||||||
ULONG len = (*cnvt1->csconvert_fn_convert)(cnvt1, srcLen, NULL, 0, NULL, &errCode, &errPos);
|
ULONG len = (*cnvt1->csconvert_fn_convert)(cnvt1, srcLen, NULL, 0, NULL, &errCode, &errPos);
|
||||||
fb_assert(len % sizeof(USHORT) == 0);
|
|
||||||
|
|
||||||
if (len == INTL_BAD_STR_LENGTH || errCode != 0)
|
if (len == INTL_BAD_STR_LENGTH || errCode != 0)
|
||||||
{
|
{
|
||||||
raiseError(isc_string_truncation);
|
raiseError(isc_string_truncation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fb_assert(len % sizeof(USHORT) == 0);
|
||||||
|
|
||||||
Firebird::HalfStaticArray<USHORT, BUFFER_SMALL> temp;
|
Firebird::HalfStaticArray<USHORT, BUFFER_SMALL> temp;
|
||||||
|
|
||||||
len = (*cnvt1->csconvert_fn_convert)(cnvt1, srcLen, src, len,
|
len = (*cnvt1->csconvert_fn_convert)(cnvt1, srcLen, src, len,
|
||||||
reinterpret_cast<UCHAR*>(temp.getBuffer(len / 2)), &errCode, &errPos);
|
reinterpret_cast<UCHAR*>(temp.getBuffer(len / 2)), &errCode, &errPos);
|
||||||
fb_assert(len % sizeof(USHORT) == 0);
|
|
||||||
temp.shrink(len / 2);
|
|
||||||
|
|
||||||
if (len == INTL_BAD_STR_LENGTH)
|
if (len == INTL_BAD_STR_LENGTH)
|
||||||
{
|
{
|
||||||
@ -137,12 +136,18 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (errCode == CS_BAD_INPUT && badInputPos)
|
if (errCode == CS_BAD_INPUT && badInputPos)
|
||||||
|
{
|
||||||
*badInputPos = errPos;
|
*badInputPos = errPos;
|
||||||
|
}
|
||||||
else if (errCode != 0)
|
else if (errCode != 0)
|
||||||
{
|
{
|
||||||
raiseError(isc_transliteration_failed);
|
raiseError(isc_transliteration_failed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fb_assert(len % sizeof(USHORT) == 0);
|
||||||
|
|
||||||
|
temp.shrink(len / 2);
|
||||||
|
|
||||||
len = (*cnvt2->csconvert_fn_convert)(cnvt2, len, reinterpret_cast<const UCHAR*>(temp.begin()),
|
len = (*cnvt2->csconvert_fn_convert)(cnvt2, len, reinterpret_cast<const UCHAR*>(temp.begin()),
|
||||||
dstLen, dst, &errCode, &errPos);
|
dstLen, dst, &errCode, &errPos);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user