diff -r 27974ced5167 -r 00bf0ef35ffa extensions/source/ole/unoconversionutilities.hxx --- a/extensions/source/ole/unoconversionutilities.hxx Thu Jul 08 21:33:48 2010 +0200 +++ b/extensions/source/ole/unoconversionutilities.hxx Tue Mar 15 14:24:01 2011 +0100 @@ -1324,47 +1324,32 @@ typelib_TypeDescription* pSeqElementDesc= NULL; TYPELIB_DANGER_GET( &pSeqElementDesc, pSeqElementTypeRef); - - // try to find VARIANT type that is related to the UNO type of the sequence elements - // the sequence as a sequence element should be handled in a special way - VARTYPE eTargetElementType = VT_EMPTY; - if ( pSeqElementDesc->eTypeClass != TypeClass_SEQUENCE ) - eTargetElementType = mapTypeClassToVartype( static_cast< TypeClass >( pSeqElementDesc->eTypeClass ) ); - - if ( eTargetElementType != VT_EMPTY ) - pArray = createUnoSequenceWrapper( rSeq, eTargetElementType ); - - if ( !pArray ) + sal_Int32 nElementSize= pSeqElementDesc->nSize; + n= punoSeq->nElements; + + SAFEARRAYBOUND rgsabound[1]; + rgsabound[0].lLbound = 0; + rgsabound[0].cElements = n; + VARIANT oleElement; + long safeI[1]; + + pArray = SafeArrayCreate(VT_VARIANT, 1, rgsabound); + + Any unoElement; + sal_uInt8 * pSeqData= (sal_uInt8*) punoSeq->elements; + + for (sal_uInt32 i = 0; i < n; i++) { - sal_Int32 nElementSize= pSeqElementDesc->nSize; - n= punoSeq->nElements; + unoElement.setValue( pSeqData + i * nElementSize, pSeqElementDesc); + VariantInit(&oleElement); - SAFEARRAYBOUND rgsabound[1]; - rgsabound[0].lLbound = 0; - rgsabound[0].cElements = n; - VARIANT oleElement; - long safeI[1]; + anyToVariant(&oleElement, unoElement); - pArray = SafeArrayCreate(VT_VARIANT, 1, rgsabound); + safeI[0] = i; + SafeArrayPutElement(pArray, safeI, &oleElement); - Any unoElement; - // sal_uInt8 * pSeqData= (sal_uInt8*) punoSeq->pElements; - sal_uInt8 * pSeqData= (sal_uInt8*) punoSeq->elements; - - for (sal_uInt32 i = 0; i < n; i++) - { - unoElement.setValue( pSeqData + i * nElementSize, pSeqElementDesc); - VariantInit(&oleElement); - - anyToVariant(&oleElement, unoElement); - - safeI[0] = i; - SafeArrayPutElement(pArray, safeI, &oleElement); - - VariantClear(&oleElement); - } + VariantClear(&oleElement); } - TYPELIB_DANGER_RELEASE( pSeqElementDesc); return pArray;