Looking at the code. Well with a small incompatibility,
most of the functionality could be resolved. Simply
CREATEOLEOBJECT() should not convert the pointer to
numeric. Such thing is wrong for GC collected ptrs.

I'll do that ASAP.

Caller code will have to be changed then to use 'EMPTY()'
instead of '== 0' to make it work after this.

Brgds,
Viktor

On 2009.08.19., at 4:02, Antonio Linares wrote:

Viktor,

Recently you modified contrib\hbwin\legacy.prg and added this code to
support Windows (numeric) handles for creating an oleauto object:

  IF ISNUMBER( xOle )   // xOle is a pDisp
     xOle := win_N2P( xOle )
  ENDIF

But OleAuto uses this code from __OleCreateObject():

     ppDisp = ( IDispatch** ) hb_gcAlloc( sizeof( IDispatch* ),
hb_ole_destructor );
     *ppDisp = pDisp;
     hb_retptrGC( ppDisp );

which it is different from  the pointer created by win_N2P().

So the call to hb_oleParam( -1 ) fails as the pointer containt is different.

I may be missing something. I appreciate your comments, thanks

Antonio Linares
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to