Skip to content

Commit

Permalink
Fixed CORE-2237 - Assertion at src\jrd\intl.cpp 569
Browse files Browse the repository at this point in the history
  • Loading branch information
asfernandes committed Dec 13, 2008
1 parent 7a185c8 commit 4769d47
Showing 1 changed file with 29 additions and 11 deletions.
40 changes: 29 additions & 11 deletions src/jrd/opt.cpp
Expand Up @@ -2388,21 +2388,27 @@ static bool dump_rsb(const jrd_req* request,
}

MoveBuffer nameBuffer;
nameBuffer.getBuffer(DataTypeUtil(tdbb).convertLength(MAX_SQL_IDENTIFIER_LEN,
CS_METADATA, tdbb->getAttachment()->att_charset));

if (name) {
length = INTL_convert_bytes(tdbb,
tdbb->getAttachment()->att_charset, nameBuffer.begin(), nameBuffer.getCapacity(),
CS_METADATA, (const BYTE*) name, length, ERR_post);
if (name)
{
if (tdbb->getAttachment()->att_charset != CS_METADATA)
{
nameBuffer.getBuffer(DataTypeUtil(tdbb).convertLength(length, CS_METADATA,
tdbb->getAttachment()->att_charset));

length = INTL_convert_bytes(tdbb,
tdbb->getAttachment()->att_charset, nameBuffer.begin(), nameBuffer.getCapacity(),
CS_METADATA, (const BYTE*) name, length, ERR_post);
name = reinterpret_cast<SCHAR*>(nameBuffer.begin());
}

*buffer_length -= 2 + length;
if (*buffer_length < 0) {
return false;
}
*buffer++ = isc_info_rsb_relation;
*buffer++ = (SCHAR) length;
memcpy(buffer, nameBuffer.begin(), length);
memcpy(buffer, name, length);
buffer += length;
}

Expand Down Expand Up @@ -2475,9 +2481,21 @@ static bool dump_rsb(const jrd_req* request,
{
const Firebird::MetaName& n = procedure->prc_name;

length = INTL_convert_bytes(tdbb,
tdbb->getAttachment()->att_charset, nameBuffer.begin(), nameBuffer.getCapacity(),
CS_METADATA, (const BYTE*) n.c_str(), n.length(), ERR_post);
if (tdbb->getAttachment()->att_charset != CS_METADATA)
{
nameBuffer.getBuffer(DataTypeUtil(tdbb).convertLength(n.length(), CS_METADATA,
tdbb->getAttachment()->att_charset));

length = INTL_convert_bytes(tdbb,
tdbb->getAttachment()->att_charset, nameBuffer.begin(), nameBuffer.getCapacity(),
CS_METADATA, (const BYTE*) n.c_str(), n.length(), ERR_post);
name = reinterpret_cast<SCHAR*>(nameBuffer.begin());
}
else
{
name = n.c_str();
length = n.length();
}

*buffer_length -= 6 + length;
if (*buffer_length < 0) {
Expand All @@ -2486,7 +2504,7 @@ static bool dump_rsb(const jrd_req* request,
*buffer++ = isc_info_rsb_begin;
*buffer++ = isc_info_rsb_relation;
*buffer++ = (SCHAR) length;
memcpy(buffer, nameBuffer.begin(), length);
memcpy(buffer, name, length);
buffer += length;
*buffer++ = isc_info_rsb_type;
*buffer++ = isc_info_rsb_sequential;
Expand Down

0 comments on commit 4769d47

Please sign in to comment.