diff options
Diffstat (limited to 'stoc/source/registry_tdprovider/tdprovider.cxx')
-rw-r--r-- | stoc/source/registry_tdprovider/tdprovider.cxx | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/stoc/source/registry_tdprovider/tdprovider.cxx b/stoc/source/registry_tdprovider/tdprovider.cxx index 87089a9adfb6..92dbc92ddeab 100644 --- a/stoc/source/registry_tdprovider/tdprovider.cxx +++ b/stoc/source/registry_tdprovider/tdprovider.cxx @@ -365,9 +365,10 @@ Any ProviderImpl::getByHierarchicalNameImpl( const OUString & rName ) aBytes.getConstArray(), aBytes.getLength(), false, TYPEREG_VERSION_1); - if (aReader.getTypeClass() == RT_TYPE_MODULE || - aReader.getTypeClass() == RT_TYPE_CONSTANTS || - aReader.getTypeClass() == RT_TYPE_ENUM) + RTTypeClass tc = aReader.getTypeClass(); + if (tc == RT_TYPE_MODULE || + tc == RT_TYPE_CONSTANTS || + tc == RT_TYPE_ENUM) { OUString aFieldName( aKey.copy( nIndex+1, aKey.getLength() - nIndex -1 ) ); sal_Int16 nPos = aReader.getFieldCount(); @@ -378,8 +379,18 @@ Any ProviderImpl::getByHierarchicalNameImpl( const OUString & rName ) break; } if (nPos >= 0) + { aRet = getRTValue( aReader.getFieldValue(nPos)); + if (tc != RT_TYPE_ENUM) + { + aRet = css::uno::makeAny< + css::uno::Reference< + css::reflection::XTypeDescription > >( + new ConstantTypeDescriptionImpl( + rName, aRet)); + } + } } } } |