diff options
Diffstat (limited to 'dbaccess')
-rw-r--r-- | dbaccess/source/core/dataaccess/ModelImpl.cxx | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/dbaccess/source/core/dataaccess/ModelImpl.cxx b/dbaccess/source/core/dataaccess/ModelImpl.cxx index 457777652298..d40a8f5c48a6 100644 --- a/dbaccess/source/core/dataaccess/ModelImpl.cxx +++ b/dbaccess/source/core/dataaccess/ModelImpl.cxx @@ -626,15 +626,20 @@ void SAL_CALL ODatabaseModelImpl::disposing( const css::lang::EventObject& Sourc if ( xCon.is() ) { bool bStore = false; - OWeakConnectionArray::const_iterator aEnd = m_aConnections.end(); - for (OWeakConnectionArray::iterator i = m_aConnections.begin(); aEnd != i; ++i) + for (OWeakConnectionArray::iterator i = m_aConnections.begin(); i != m_aConnections.end(); ) { - if ( xCon == i->get() ) + css::uno::Reference< css::sdbc::XConnection > xIterConn ( *i ); + if ( !xIterConn.is()) + { + i = m_aConnections.erase(i); + } + else if ( xCon == xIterConn ) { *i = css::uno::WeakReference< css::sdbc::XConnection >(); bStore = true; break; - } + } else + ++i; } if ( bStore ) |