Przemysław Czerpak wrote:
>
> After replacing HBXBP and HBQT references with some other OOP code
> all works without any problems so I can confirm that the problem is
> inside HBXBP and/or HBQT.
>
No, it is not hbXBP and/or hbQT problem.
The problem lies in when GC pointer is retrieved.
Code in tgui.prg compiled as .dll
=======================
Function TestGPF()
Local oWnd
oWnd := QMainWindow():new()
oWnd:setWindowTitle( "Window" )
oWnd:show()
Return Nil
Call in tst.prg linked as .exe
=====================
Function Main()
TestGPF()
Return Nil
The above code is enough to demonstrate.
The analysis
=========
oWnd:setWindowTitle( "Window" ) calls QWidget.cpp's
HB_FUNC( QT_QWIDGET_SETWINDOWTITLE )
{
QWidget * p = hbqt_par_QWidget( 1 );
if( p )
{
( p )->setWindowTitle( QWidget::tr( hb_parc( 2 ) ) );
}
}
QWidget * p = hbqt_par_QWidget( 1 ); maps to hbqt_gcpointer( iParam )
void * hbqt_gcpointer( int iParam )
{
QGC_POINTER * p;
HB_TRACE( HB_TR_ALWAYS, ( "hbqt_gcpointer( %d )", iParam ) );
p = ( QGC_POINTER * ) hb_parptrGC( hbqt_gcFuncs(), iParam );
if( p && p->ph )
return p->ph;
else if( HB_ISPOINTER( iParam ) )
{
HB_TRACE( HB_TR_ALWAYS, ( "hbqt_gcpointer(): returns raw pointer: %p",
hb_parptr( iParam ) ) );
return hb_parptr( iParam );
}
else
{
HB_TRACE( HB_TR_DEBUG, ( "hbqt_gcpointer(): returns NULL" ) );
return NULL; /* TODO: Still better if RTE. */
}
}
Here I am returned
else if( HB_ISPOINTER( iParam ) )
{
HB_TRACE( HB_TR_ALWAYS, ( "hbqt_gcpointer(): returns raw pointer: %p",
hb_parptr( iParam ) ) );
return hb_parptr( iParam );
}
which should not be as the pointer is created with new() and is a valid GC
collectible pointer.
In composite linked application without .dll part I am returned
if( p && p->ph )
return p->ph;
which is correct and so no GPF.
Hope it helps.
-----
enjoy hbIDEing...
Pritpal Bedi
http://hbide.vouch.info/
--
View this message in context:
http://harbour-devel.1590103.n2.nabble.com/CLASSES-Instance-Variable-as-Object-Access-Assign-Elsewhere-tp4941404p4956946.html
Sent from the harbour-devel mailing list archive at Nabble.com.
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour