Skip to content

Commit

Permalink
Backported CORE-3730: isc_dsql_exec_immed2() loses input parameter va…
Browse files Browse the repository at this point in the history
…lue with RETURNING clause.
  • Loading branch information
dyemanov committed Jan 24, 2012
1 parent cd6c1a8 commit fd4bdc7
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion src/remote/protocol.cpp
Expand Up @@ -1701,7 +1701,8 @@ static bool_t xdr_sql_blr(
if (!(message != 0) ||
statement->rsr_format->fmt_length > statement->rsr_fmt_length)
{
REMOTE_release_messages(message);
const REM_MSG org_message = message;
const USHORT org_length = message ? statement->rsr_fmt_length : 0;
statement->rsr_fmt_length = statement->rsr_format->fmt_length;
statement->rsr_buffer = message =
(REM_MSG) ALLR_block(type_msg, statement->rsr_fmt_length);
Expand All @@ -1710,6 +1711,14 @@ static bool_t xdr_sql_blr(
#ifdef SCROLLABLE_CURSORS
message->msg_prior = message;
#endif
if (org_length)
{
// dimitr: the original buffer might have something useful inside
// (filled by a prior xdr_sql_message() call, for example),
// so its contents must be preserved (see CORE-3730)
memcpy(message->msg_buffer, org_message->msg_buffer, org_length);
}
REMOTE_release_messages(org_message);
}

return TRUE;
Expand Down

0 comments on commit fd4bdc7

Please sign in to comment.