connectivity/source/drivers/firebird/Connection.cxx | 12 ++++++------ connectivity/source/drivers/firebird/Connection.hxx | 4 +--- connectivity/source/drivers/firebird/Driver.cxx | 2 ++ external/firebird/ExternalProject_firebird.mk | 1 - 4 files changed, 9 insertions(+), 10 deletions(-)
New commits: commit 715ecfe3617cf13fd8d994e4322c3bbcc093e5cd Author: Norbert Thiebaud <[email protected]> Date: Sat Jun 28 16:54:07 2014 +0200 firebird driver: shutdown explicitely firebird on dispose of driver. Change-Id: Ia44f7e01a3a01da57e4d9382f41511aa6f987b43 diff --git a/connectivity/source/drivers/firebird/Driver.cxx b/connectivity/source/drivers/firebird/Driver.cxx index c14e1f2..a6eacc6 100644 --- a/connectivity/source/drivers/firebird/Driver.cxx +++ b/connectivity/source/drivers/firebird/Driver.cxx @@ -110,6 +110,8 @@ void FirebirdDriver::disposing() osl_clearEnvironment(our_sFirebirdMsgVar.pData); #endif + OSL_VERIFY(fb_shutdown(0, 1)); + ODriver_BASE::disposing(); } commit 9015333ebd5b33c9c6c3a9072167af4c77d6d75a Author: Norbert Thiebaud <[email protected]> Date: Sat Jun 28 16:52:54 2014 +0200 firebird: release driver on dispose rather than destroy. Change-Id: I5ffeaf818c1eb4985bdd150830f089f03fe42ceb diff --git a/connectivity/source/drivers/firebird/Connection.cxx b/connectivity/source/drivers/firebird/Connection.cxx index 1ad4f44..2d846d8 100644 --- a/connectivity/source/drivers/firebird/Connection.cxx +++ b/connectivity/source/drivers/firebird/Connection.cxx @@ -77,7 +77,7 @@ const OUString Connection::our_sDBLocation( "firebird.fdb" ); Connection::Connection(FirebirdDriver* _pDriver) : Connection_BASE(m_aMutex) , OSubComponent<Connection, Connection_BASE>((::cppu::OWeakObject*)_pDriver, this) - , m_pDriver(_pDriver) + , m_xDriver(_pDriver) , m_sConnectionURL() , m_sFirebirdURL() , m_bIsEmbedded(false) @@ -93,16 +93,12 @@ Connection::Connection(FirebirdDriver* _pDriver) , m_xMetaData(0) , m_aStatements() { - m_pDriver->acquire(); } Connection::~Connection() { if(!isClosed()) close(); - - m_pDriver->release(); - m_pDriver = 0; } void SAL_CALL Connection::release() throw() @@ -348,7 +344,7 @@ OUString Connection::transformPreparedStatement(const OUString& _sSQL) OUString sSqlStatement (_sSQL); try { - OSQLParser aParser( m_pDriver->getContext() ); + OSQLParser aParser( m_xDriver->getContext() ); OUString sErrorMessage; OUString sNewSql; OSQLParseNode* pNode = aParser.parseTree(sErrorMessage,_sSQL); @@ -758,6 +754,7 @@ void Connection::disposing() dispose_ChildImpl(); cppu::WeakComponentImplHelperBase::disposing(); + m_xDriver.clear(); } void Connection::disposeStatements() diff --git a/connectivity/source/drivers/firebird/Connection.hxx b/connectivity/source/drivers/firebird/Connection.hxx index 1c783bb..d613263 100644 --- a/connectivity/source/drivers/firebird/Connection.hxx +++ b/connectivity/source/drivers/firebird/Connection.hxx @@ -83,7 +83,7 @@ namespace connectivity // for each row returned by // DatabaseMetaData.getTypeInfo. /** The parent driver that created this connection. */ - FirebirdDriver* m_pDriver; + ::rtl::Reference<FirebirdDriver> m_xDriver; /** The URL passed to us when opening, i.e. of the form sdbc:* */ ::rtl::OUString m_sConnectionURL; @@ -179,8 +179,6 @@ namespace connectivity throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); - FirebirdDriver* getDriver() const {return m_pDriver;} - ::rtl::OUString getConnectionURL() const {return m_sConnectionURL;} bool isEmbedded() const {return m_bIsEmbedded;} ::rtl::OUString getUserName() const {return m_sUser;} commit ae6551b43d6cde10edb449cca6d2caa8fa428b20 Author: Norbert Thiebaud <[email protected]> Date: Sat Jun 28 16:50:21 2014 +0200 firebird driver, abandon ref to about to be disposed embedded storage. Change-Id: I6bfce155151b79cd0a1707744e79298b45d8752b diff --git a/connectivity/source/drivers/firebird/Connection.cxx b/connectivity/source/drivers/firebird/Connection.cxx index 69b2377..1ad4f44 100644 --- a/connectivity/source/drivers/firebird/Connection.cxx +++ b/connectivity/source/drivers/firebird/Connection.cxx @@ -679,6 +679,9 @@ void SAL_CALL Connection::documentEventOccured( const DocumentEvent& _Event ) void SAL_CALL Connection::disposing(const EventObject& /*rSource*/) throw (RuntimeException, std::exception) { + MutexGuard aGuard( m_aMutex ); + + m_xEmbeddedStorage.clear(); } void Connection::buildTypeInfo() throw( SQLException) commit 814818c3451fa32900c011278e2e5b62e3518eb0 Author: Norbert Thiebaud <[email protected]> Date: Sat Jun 28 16:47:21 2014 +0200 firebird: enable-debug cause trouble due to a lifecycle management issue firebird in debug mode abort() on lo shutdown due to a lifcycle management issue where firebord try to create a directory in a temp directory that is not there anymore, and then exception for it and that exception in debug mode cause an abort. Change-Id: Iabbd6ffda34a84e5b0d8e44761226083c8c1d168 diff --git a/external/firebird/ExternalProject_firebird.mk b/external/firebird/ExternalProject_firebird.mk index 6e3f582..d25c667 100644 --- a/external/firebird/ExternalProject_firebird.mk +++ b/external/firebird/ExternalProject_firebird.mk @@ -50,7 +50,6 @@ $(call gb_ExternalProject_get_state_target,firebird,build): --without-editline \ --disable-superserver \ --with-system-icu --without-fbsample --without-fbsample-db \ - $(if $(filter TRUE,$(ENABLE_DEBUG)),--enable-debug) \ $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ $(if $(filter IOS ANDROID,$(OS)),--disable-shared,--disable-static) \ && $(if $(filter WNT,$(OS)),\ _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
