Hi Francesco, Maybe it'd be a good idea to also add similar traces to hbqt_gcpointerFromItem(), hbqt_pPtrFromItem() and hbqt_pPtrFromObj() function.
Brgds, Viktor On 2010 Apr 11, at 15:01, francesco perillo wrote: > void * hbqt_gcpointer( int iParam ) > { > HB_TRACE( HB_TR_DEBUG, ( "hbqt_gcpointer iParam=%d", iParam ) ); > QGC_POINTER * p = ( QGC_POINTER * ) hb_parptrGC( hbqt_gcFuncs(), iParam ); > if( p && p->ph ) > { > HB_TRACE( HB_TR_DEBUG, ( "hbqt_gcpointer returns p->ph > ph=%p", p->ph ) ); > return p->ph; > } > else if( HB_ISPOINTER( iParam ) ) > { > HB_TRACE( HB_TR_DEBUG, ( "hbqt_gcpointer returns hb_parptr( > iParam ) " ) ); > return hb_parptr( iParam ); /* TOFIX: In what cases is this > needed? Reference counting to avoid referring to freed pointers? */ > } > else { > HB_TRACE( HB_TR_DEBUG, ( "HBQT_GCPOINTER RETURNS NULL " ) ); > return NULL; /* TODO: Still better if RTE. */ > } > } > > >> From my logs, you can't RTE because when you, for example, create a > QPushButton with > hello := QPushButton():new( ) > there is a > pObj = ( QPushButton* ) new QPushButton( hbqt_par_QWidget( 1 ) ) ; > > hbqt_par_QWidget( 1 ) is a define to hbqt_gcpointer... if parameter at > harbour level is not present hbqt_gcpointer returns NULL. If the > parameter is mandatory, probably it should be enforced at harbour > class level.... > > Francesco > > there is a > HB_TRACE( HB_TR_DEBUG, ( "HBQT_GCPOINTER RETURNS NULL " ) ); > return NULL; /* TODO: Still better if RTE. */ > _______________________________________________ > Harbour mailing list (attachment size limit: 40KB) > Harbour@harbour-project.org > http://lists.harbour-project.org/mailman/listinfo/harbour _______________________________________________ Harbour mailing list (attachment size limit: 40KB) Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour