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_QUAD& aBlobID):
Clob_BASE(m_aMutex),
m_aBlob(pDatabaseHandle, pTransactionHandle, aBlobID)
m_aBlob(new connectivity::firebird::Blob(pDatabaseHandle, pTransactionHandle, aBlobID))
{
}
void SAL_CALL Clob::disposing()
{
m_aBlob.disposing();
m_aBlob->dispose();
m_aBlob.clear();
Clob_BASE::disposing();
}
@ -46,7 +47,7 @@ sal_Int64 SAL_CALL Clob::length()
// read the entire blob
// 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() ),
aEntireBlob.getLength(),
RTL_TEXTENCODING_UTF8 );
@ -63,7 +64,7 @@ OUString SAL_CALL Clob::getSubString(sal_Int64 nPosition,
// read the entire blob
// TODO FIXME better solution?
// 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() ),
aEntireBlob.getLength(),
RTL_TEXTENCODING_UTF8 );
@ -77,7 +78,10 @@ OUString SAL_CALL Clob::getSubString(sal_Int64 nPosition,
uno::Reference< XInputStream > SAL_CALL Clob::getCharacterStream()
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*/,

View File

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