Kaydet (Commit) 985df3aa authored tarafından Andrzej J.R. Hunt's avatar Andrzej J.R. Hunt

Free SQLDA if statement preparation fails. (firebird-sdbc)

Otherwise we are left with an invalid sqlda which cannot be safely
used later.

Change-Id: I506a17266da798fa6ed46c65f3838bb8fafbe241
üst 23cb9490
......@@ -145,9 +145,13 @@ void OStatementCommonBase::prepareAndDescribeStatement(const OUString& sql,
&m_aStatementHandle);
if (aErr)
{
free(pOutSqlda);
pOutSqlda = 0;
evaluateStatusVector(m_statusVector,
"isc_dsql_allocate_statement",
*this);
}
aErr = isc_dsql_prepare(m_statusVector,
&m_pConnection->getTransaction(),
......@@ -158,9 +162,14 @@ void OStatementCommonBase::prepareAndDescribeStatement(const OUString& sql,
pInSqlda);
if (aErr)
{
// TODO: free statement handle?
free(pOutSqlda);
pOutSqlda = 0;
evaluateStatusVector(m_statusVector,
"isc_dsql_prepare",
*this);
}
aErr = isc_dsql_describe(m_statusVector,
&m_aStatementHandle,
......@@ -169,9 +178,14 @@ void OStatementCommonBase::prepareAndDescribeStatement(const OUString& sql,
if (aErr)
{
// TODO: free statement handle, etc.?
free(pOutSqlda);
pOutSqlda = 0;
evaluateStatusVector(m_statusVector,
"isc_dsql_describe",
*this);
}
// Ensure we have enough space in pOutSqlda
if (pOutSqlda->sqld > pOutSqlda->sqln)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment