diff --git a/ChangeLog.txt b/ChangeLog.txt index f237a81e9d..80138e9a0b 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -10,6 +10,10 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2017-05-12 09:57 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) + * contrib/hbwin/olecore.c + + added support for VT_VARIANT items to __oleVariantNew() + 2017-05-11 18:05 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * contrib/hbwin/olecore.c * create resizable array instead of fixed size array when empty OLE diff --git a/contrib/hbwin/olecore.c b/contrib/hbwin/olecore.c index aa4764a461..60f6d0c92a 100644 --- a/contrib/hbwin/olecore.c +++ b/contrib/hbwin/olecore.c @@ -638,6 +638,14 @@ static SAFEARRAY * hb_oleSafeArrayFromItem( PHB_ITEM pItem, VARTYPE vt ) if( pStr == NULL ) ptr = hb_oleItemToString( hb_arrayGetItemPtr( pItem, uiPos ) ); break; + case VT_VARIANT: + if( pStr == NULL ) + { + VariantInit( &v ); + hb_oleItemToVariant( &v, hb_arrayGetItemPtr( pItem, uiPos ) ); + ptr = &v; + } + break; } if( ptr != NULL ) @@ -645,6 +653,8 @@ static SAFEARRAY * hb_oleSafeArrayFromItem( PHB_ITEM pItem, VARTYPE vt ) long lIndex[ 1 ]; lIndex[ 0 ] = ( long ) uiPos - 1; SafeArrayPutElement( pSafeArray, lIndex, ptr ); + if( vt == VT_VARIANT ) + VariantClear( &v ); } else { @@ -2612,6 +2622,12 @@ HB_FUNC( __OLEVARIANTNEW ) } break; + case VT_VARIANT: + VariantInit( &variant ); + if( pInit != NULL ) + hb_oleItemToVariant( &variant, pInit ); + break; + default: if( iType & VT_ARRAY ) {