From eaad712bc99fe5484f0b25c4de8cc350aeb42a05 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 4 Oct 2008 18:34:51 +0000 Subject: [PATCH] 2008-10-04 20:34 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * contrib/hbole/ole2.c ! Fixed errors in previous commit. Thanks Toninho. * contrib/hbwin/win_ole.c ! Prefixed remaining static variables with 's_'. --- harbour/ChangeLog | 7 ++++++ harbour/contrib/hbole/ole2.c | 21 ++++++++++++++++-- harbour/contrib/hbwin/win_ole.c | 38 ++++++++++++++++----------------- 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 5c19583ea1..b827e33d0e 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,13 @@ 2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2008-10-04 20:34 UTC+0200 Viktor Szakats (harbour.01 syenar hu) + * contrib/hbole/ole2.c + ! Fixed errors in previous commit. Thanks Toninho. + + * contrib/hbwin/win_ole.c + ! Prefixed remaining static variables with 's_'. + 2008-10-04 19:36 UTC+0100 Francesco Saverio Giudice (info at fsgiudice dot com) * contrib/hbwhat/wincore.prg * HB_Exec() changed to HB_ExecFromArray() diff --git a/harbour/contrib/hbole/ole2.c b/harbour/contrib/hbole/ole2.c index 73e0edba12..e4a9d4775b 100644 --- a/harbour/contrib/hbole/ole2.c +++ b/harbour/contrib/hbole/ole2.c @@ -414,16 +414,33 @@ HB_FUNC( CREATEOLEOBJECT ) /* ( cOleName | cCLSID [, cIID ] ) */ hb_retptr( pDisp ); } +static LPSTR hb_oleWideToAnsi( BSTR wString ) +{ + int nConvertedLen = WideCharToMultiByte( CP_ACP, 0, wString, -1, NULL, 0, NULL, NULL ); + + if( nConvertedLen ) + { + char * cString = ( char * ) hb_xgrab( nConvertedLen + 1 ); + + if( WideCharToMultiByte( CP_ACP, 0, wString, -1, cString, nConvertedLen + 1, NULL, NULL ) ) + return cString; + else + hb_xfree( cString ); + } + + return NULL; +} + HB_FUNC( OLEEXCEPTIONSOURCE ) { if( ( LONG ) s_nOleError == DISP_E_EXCEPTION ) - hb_retc_buffer( hb_oleWideToAnsi( excep.bstrSource ) ); + hb_retc_buffer( hb_oleWideToAnsi( s_excep.bstrSource ) ); } HB_FUNC( OLEEXCEPTIONDESCRIPTION ) { if( ( LONG ) s_nOleError == DISP_E_EXCEPTION ) - hb_retc_buffer( hb_oleWideToAnsi( excep.bstrDescription ) ); + hb_retc_buffer( hb_oleWideToAnsi( s_excep.bstrDescription ) ); } HB_FUNC( OLEINVOKE ) /* ( hOleObject, szMethodName, uParams... ) */ diff --git a/harbour/contrib/hbwin/win_ole.c b/harbour/contrib/hbwin/win_ole.c index ca7c3d0c82..b66d32f975 100644 --- a/harbour/contrib/hbwin/win_ole.c +++ b/harbour/contrib/hbwin/win_ole.c @@ -136,10 +136,10 @@ static void hb_vmRequestReset( void ) } /* ----------------------------------------------------------------------- */ -static EXCEPINFO excep; +static EXCEPINFO s_excep; -static DISPID lPropPut = DISPID_PROPERTYPUT; -static UINT uArgErr; +static DISPID s_lPropPut = DISPID_PROPERTYPUT; +static UINT s_uArgErr; HRESULT hb_oleVariantToItem( PHB_ITEM pItem, VARIANT *pVariant ); static PHB_ITEM SafeArrayToArray( SAFEARRAY * parray, UINT iDim, long * rgIndices, VARTYPE vt ); @@ -1289,14 +1289,14 @@ HB_FUNC( __OLEENUMSTOP ) HB_FUNC( OLEEXCEPTIONSOURCE ) { if( ( LONG ) s_nOleError == DISP_E_EXCEPTION ) - hb_retc_buffer( hb_oleWideToAnsi( excep.bstrSource ) ); + hb_retc_buffer( hb_oleWideToAnsi( s_excep.bstrSource ) ); } /* ----------------------------------------------------------------------- */ HB_FUNC( OLEEXCEPTIONDESCRIPTION ) { if( ( LONG ) s_nOleError == DISP_E_EXCEPTION ) - hb_retc_buffer( hb_oleWideToAnsi( excep.bstrDescription ) ); + hb_retc_buffer( hb_oleWideToAnsi( s_excep.bstrDescription ) ); } /* ----------------------------------------------------------------------- */ @@ -1507,13 +1507,13 @@ HB_FUNC( OLERELEASEOBJECT ) /* ( hOleObject, szMethodName, uParams... ) */ /* ----------------------------------------------------------------------- */ static HRESULT OleSetProperty( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDispParams ) { - pDispParams->rgdispidNamedArgs = &lPropPut; + pDispParams->rgdispidNamedArgs = &s_lPropPut; pDispParams->cNamedArgs = 1; /* 1 Based!!! */ if( ( ISBYREF( 1 ) ) || ISARRAY( 1 ) ) { - memset( ( LPBYTE ) &excep, 0, sizeof( excep ) ); + memset( ( LPBYTE ) &s_excep, 0, sizeof( s_excep ) ); s_nOleError = pDisp->lpVtbl->Invoke( pDisp, DispID, @@ -1522,14 +1522,14 @@ static HRESULT OleSetProperty( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDis DISPATCH_PROPERTYPUTREF, pDispParams, NULL, /* No return value */ - &excep, - &uArgErr ); + &s_excep, + &s_uArgErr ); if( SUCCEEDED( s_nOleError ) ) return s_nOleError; } - memset( ( LPBYTE ) &excep, 0, sizeof( excep ) ); + memset( ( LPBYTE ) &s_excep, 0, sizeof( s_excep ) ); s_nOleError = pDisp->lpVtbl->Invoke( pDisp, DispID, @@ -1538,8 +1538,8 @@ static HRESULT OleSetProperty( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDis DISPATCH_PROPERTYPUT, pDispParams, NULL, /* No return value */ - &excep, - &uArgErr ); + &s_excep, + &s_uArgErr ); pDispParams->rgdispidNamedArgs = NULL; pDispParams->cNamedArgs = 0; @@ -1550,7 +1550,7 @@ static HRESULT OleSetProperty( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDis /* ----------------------------------------------------------------------- */ static HRESULT OleInvoke( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDispParams ) { - memset( ( LPBYTE ) &excep, 0, sizeof( excep ) ); + memset( ( LPBYTE ) &s_excep, 0, sizeof( s_excep ) ); s_nOleError = pDisp->lpVtbl->Invoke( pDisp, DispID, @@ -1559,8 +1559,8 @@ static HRESULT OleInvoke( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDispPara DISPATCH_METHOD, pDispParams, &s_RetVal, - &excep, - &uArgErr ); + &s_excep, + &s_uArgErr ); return s_nOleError; } @@ -1568,7 +1568,7 @@ static HRESULT OleInvoke( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDispPara /* ----------------------------------------------------------------------- */ static HRESULT OleGetProperty( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDispParams ) { - memset( ( LPBYTE ) &excep, 0, sizeof( excep ) ); + memset( ( LPBYTE ) &s_excep, 0, sizeof( s_excep ) ); s_nOleError = pDisp->lpVtbl->Invoke( pDisp, DispID, @@ -1577,8 +1577,8 @@ static HRESULT OleGetProperty( IDispatch *pDisp, DISPID DispID, DISPPARAMS *pDis DISPATCH_PROPERTYGET, pDispParams, &s_RetVal, - &excep, - &uArgErr ); + &s_excep, + &s_uArgErr ); /*HB_TRACE(HB_TR_INFO, ("OleGetValue: %p\n", s_nOleError));*/ @@ -1615,7 +1615,7 @@ static void OleThrowError( void ) if( s_nOleError == DISP_E_EXCEPTION ) { - sDescription = hb_oleWideToAnsi( excep.bstrDescription ); + sDescription = hb_oleWideToAnsi( s_excep.bstrDescription ); fFree = TRUE; } else