https://bugs.documentfoundation.org/show_bug.cgi?id=117842

--- Comment #11 from Mike Kaganski <mikekagan...@hotmail.com> ---
In "normal" case, the XConnection (that gets passed to
FirebirdDriver::getDataDefinitionByConnection) is created in
OPoolCollection::getConnectionWithInfo using a simple call to xDriver->connect.
Given that xDriver is connectivity::firebird::FirebirdDriver, the resulting
object is connectivity::firebird::Connection.

In pooling case, OPoolCollection::getConnectionWithInfo takes another branch,
and creates the XConnection using a call to
pConnectionPool->getConnectionWithInfo, and that ends up in
connectivity::OPooledConnection::getConnection, which wraps "m_xRealConnection"
(which is the connectivity::firebird::Connection, also obtained from
FirebirdDriver) into a connectivity::OConnectionWeakWrapper.

So back in FirebirdDriver::getDataDefinitionByConnection, rConnection (which,
as described, may be of different actual classes) is unconditionally cast to
connectivity::firebird::Connection. Hence the crash.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to