[Libreoffice-commits] .: Branch 'libreoffice-3-6' - basic/source
Michael Stahl
mst at kemper.freedesktop.org
Tue Jun 12 14:57:52 PDT 2012
basic/source/classes/propacc.cxx | 21 +++++++++++++--------
basic/source/inc/propacc.hxx | 2 +-
2 files changed, 14 insertions(+), 9 deletions(-)
New commits:
commit dfa7f7cd91f1860ed0e469b121a5ec0604aea125
Author: Michael Stahl <mstahl at redhat.com>
Date: Tue Jun 12 22:25:23 2012 +0200
SbPropertyValues::setPropertyValue doesn't check that property exists
(cherry picked from commit f9c5a36609523317b6634f18d834296c6b3dcb22)
Conflicts:
basic/source/classes/propacc.cxx
Change-Id: Ia63eea0c19bfa750b80f4c99f278f8d144c714a8
diff --git a/basic/source/classes/propacc.cxx b/basic/source/classes/propacc.cxx
index ce9c027..66c6976 100644
--- a/basic/source/classes/propacc.cxx
+++ b/basic/source/classes/propacc.cxx
@@ -34,6 +34,7 @@
#include <sbunoobj.hxx>
using com::sun::star::uno::Reference;
+using namespace com::sun::star;
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star::beans;
@@ -109,14 +110,20 @@ Reference< XPropertySetInfo > SbPropertyValues::getPropertySetInfo(void) throw(
//-------------------------------------------------------------------------
-sal_Int32 SbPropertyValues::GetIndex_Impl( const ::rtl::OUString &rPropName ) const
+size_t SbPropertyValues::GetIndex_Impl( const ::rtl::OUString &rPropName ) const
{
PropertyValue **ppPV;
ppPV = (PropertyValue **)
bsearch( &rPropName, _aPropVals.GetData(), _aPropVals.Count(),
sizeof( PropertyValue* ),
SbCompare_UString_PropertyValue_Impl );
- return ppPV ? ppPV - _aPropVals.GetData() : USHRT_MAX;
+ if (!ppPV)
+ {
+ throw beans::UnknownPropertyException(
+ "Property not found: " + rPropName,
+ const_cast<SbPropertyValues&>(*this));
+ }
+ return ppPV - _aPropVals.GetData();
}
//----------------------------------------------------------------------------
@@ -130,7 +137,7 @@ void SbPropertyValues::setPropertyValue(
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException)
{
- sal_Int32 nIndex = GetIndex_Impl( aPropertyName );
+ size_t const nIndex = GetIndex_Impl( aPropertyName );
PropertyValue *pPropVal = _aPropVals.GetObject(
sal::static_int_cast< sal_uInt16 >(nIndex));
pPropVal->Value = aValue;
@@ -144,11 +151,9 @@ Any SbPropertyValues::getPropertyValue(
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException)
{
- sal_Int32 nIndex = GetIndex_Impl( aPropertyName );
- if ( nIndex != USHRT_MAX )
- return _aPropVals.GetObject(
- sal::static_int_cast< sal_uInt16 >(nIndex))->Value;
- return Any();
+ size_t const nIndex = GetIndex_Impl( aPropertyName );
+ return _aPropVals.GetObject(
+ sal::static_int_cast< sal_uInt16 >(nIndex))->Value;
}
//----------------------------------------------------------------------------
diff --git a/basic/source/inc/propacc.hxx b/basic/source/inc/propacc.hxx
index f8e91d1..431f703 100644
--- a/basic/source/inc/propacc.hxx
+++ b/basic/source/inc/propacc.hxx
@@ -52,7 +52,7 @@ class SbPropertyValues: public SbPropertyValuesHelper
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > _xInfo;
private:
- sal_Int32 GetIndex_Impl( const ::rtl::OUString &rPropName ) const;
+ size_t GetIndex_Impl( const ::rtl::OUString &rPropName ) const;
public:
SbPropertyValues();
More information about the Libreoffice-commits
mailing list