summaryrefslogtreecommitdiff
path: root/stoc/source/registry_tdprovider/tdprovider.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'stoc/source/registry_tdprovider/tdprovider.cxx')
-rw-r--r--stoc/source/registry_tdprovider/tdprovider.cxx17
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));
+ }
+ }
}
}
}