loplugin:refcounting

Change-Id: Ied9ecabb3cb6b5d629ec72db164df452d8ca114a
This commit is contained in:
Stephan Bergmann
2017-01-14 16:19:14 +01:00
parent f963c33ddc
commit 1c3385fa27
2 changed files with 11 additions and 6 deletions

View File

@@ -28,13 +28,14 @@ Clob::Clob(isc_db_handle* pDatabaseHandle,
isc_tr_handle* pTransactionHandle, isc_tr_handle* pTransactionHandle,
ISC_QUAD& aBlobID): ISC_QUAD& aBlobID):
Clob_BASE(m_aMutex), Clob_BASE(m_aMutex),
m_aBlob(pDatabaseHandle, pTransactionHandle, aBlobID) m_aBlob(new connectivity::firebird::Blob(pDatabaseHandle, pTransactionHandle, aBlobID))
{ {
} }
void SAL_CALL Clob::disposing() void SAL_CALL Clob::disposing()
{ {
m_aBlob.disposing(); m_aBlob->dispose();
m_aBlob.clear();
Clob_BASE::disposing(); Clob_BASE::disposing();
} }
@@ -46,7 +47,7 @@ sal_Int64 SAL_CALL Clob::length()
// read the entire blob // read the entire blob
// TODO FIXME better solution? // TODO FIXME better solution?
uno::Sequence < sal_Int8 > aEntireBlob = m_aBlob.getBytes( 1, m_aBlob.length()); uno::Sequence < sal_Int8 > aEntireBlob = m_aBlob->getBytes( 1, m_aBlob->length());
OUString sEntireClob ( reinterpret_cast< sal_Char *>( aEntireBlob.getArray() ), OUString sEntireClob ( reinterpret_cast< sal_Char *>( aEntireBlob.getArray() ),
aEntireBlob.getLength(), aEntireBlob.getLength(),
RTL_TEXTENCODING_UTF8 ); RTL_TEXTENCODING_UTF8 );
@@ -63,7 +64,7 @@ OUString SAL_CALL Clob::getSubString(sal_Int64 nPosition,
// read the entire blob // read the entire blob
// TODO FIXME better solution? // TODO FIXME better solution?
// TODO FIXME Assume indexing of nPosition starts at position 1. // TODO FIXME Assume indexing of nPosition starts at position 1.
uno::Sequence < sal_Int8 > aEntireBlob = m_aBlob.getBytes( 1, m_aBlob.length()); uno::Sequence < sal_Int8 > aEntireBlob = m_aBlob->getBytes( 1, m_aBlob->length());
OUString sEntireClob ( reinterpret_cast< sal_Char *>( aEntireBlob.getArray() ), OUString sEntireClob ( reinterpret_cast< sal_Char *>( aEntireBlob.getArray() ),
aEntireBlob.getLength(), aEntireBlob.getLength(),
RTL_TEXTENCODING_UTF8 ); RTL_TEXTENCODING_UTF8 );
@@ -77,7 +78,10 @@ OUString SAL_CALL Clob::getSubString(sal_Int64 nPosition,
uno::Reference< XInputStream > SAL_CALL Clob::getCharacterStream() uno::Reference< XInputStream > SAL_CALL Clob::getCharacterStream()
throw(SQLException, RuntimeException, std::exception) throw(SQLException, RuntimeException, std::exception)
{ {
return m_aBlob.getBinaryStream(); MutexGuard aGuard(m_aMutex);
checkDisposed(Clob_BASE::rBHelper.bDisposed);
return m_aBlob->getBinaryStream();
} }
sal_Int64 SAL_CALL Clob::position(const OUString& /*rPattern*/, sal_Int64 SAL_CALL Clob::position(const OUString& /*rPattern*/,

View File

@@ -16,6 +16,7 @@
#include <com/sun/star/io/XInputStream.hpp> #include <com/sun/star/io/XInputStream.hpp>
#include <com/sun/star/sdbc/XClob.hpp> #include <com/sun/star/sdbc/XClob.hpp>
#include <rtl/ref.hxx>
namespace connectivity namespace connectivity
{ {
@@ -35,7 +36,7 @@ namespace connectivity
* hence we store the data in a Blob, and the Clob class is * hence we store the data in a Blob, and the Clob class is
* a wrapper around that. * a wrapper around that.
*/ */
connectivity::firebird::Blob m_aBlob; rtl::Reference<connectivity::firebird::Blob> m_aBlob;
public: public:
Clob(isc_db_handle* pDatabaseHandle, Clob(isc_db_handle* pDatabaseHandle,