2012-05-12 00:55 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)

* contrib/hbqt/hbmk2_qt.hb
    * Fixed: the objects derived from QObject but without a constructor
      were conflickting somehow with the use of shared pointer.
      Now any demo in hbqt/tests and hbxbp/tests does not through
      error messages at EXIT. TESTBROW.PRG with #if 0 / #if 1 
      works flawlessly. However, in hbIDE these error messages still
      exist if :destroy() is not employed, otherwise, neither error 
      messages nor GPF.
This commit is contained in:
Pritpal Bedi
2012-05-12 08:02:38 +00:00
parent 914f285220
commit 1ccbc129f6
2 changed files with 18 additions and 4 deletions

View File

@@ -16,6 +16,16 @@
The license applies to all entries newer than 2009-04-28.
*/
2012-05-12 00:55 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbqt/hbmk2_qt.hb
* Fixed: the objects derived from QObject but without a constructor
were conflickting somehow with the use of shared pointer.
Now any demo in hbqt/tests and hbxbp/tests does not through
error messages at EXIT. TESTBROW.PRG with #if 0 / #if 1
works flawlessly. However, in hbIDE these error messages still
exist if :destroy() is not employed, otherwise, neither error
messages nor GPF.
2012-05-11 18:45 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbide/idefunctions.prg
* contrib/hbide/ideharbourhelp.prg

View File

@@ -1494,7 +1494,7 @@ METHOD HbQtSource:build()
ENDIF
AAdd( aLine, "typedef struct" )
AAdd( aLine, "{" )
IF ::isObject
IF ::isObject .AND. ::isConstructor
AAdd( aLine, " QPointer< "+ cObjPfx + ::cQtObject +" > ph;" )
ELSE
IF ::isList
@@ -1573,7 +1573,10 @@ METHOD HbQtSource:build()
AAdd( aLine, " int i; " )
AAdd( aLine, " for( i = 0; i < p->ph->size(); i++ )" )
AAdd( aLine, " {" )
AAdd( aLine, " hb_itemRelease( p->ph->at( i ) );" )
AAdd( aLine, " if( p->ph->at( i ) != NULL )" )
AAdd( aLine, " {" )
AAdd( aLine, " hb_itemRelease( p->ph->at( i ) );" )
AAdd( aLine, " }" )
AAdd( aLine, " }" )
ENDIF
AAdd( aLine, " delete ( ( " + cObjPfx + ::cQtObject + iif( ::isList, "< void * >", "" ) + " * ) p->ph ); " )
@@ -1607,7 +1610,7 @@ METHOD HbQtSource:build()
AAdd( aLine, " /* CASE else */" )
AAdd( aLine, " HBQT_GC_T * p = ( HBQT_GC_T * ) Cargo;" )
AAdd( aLine, " " )
AAdd( aLine, " if( p && p->bNew )" )
AAdd( aLine, " if( p )" ) //&& p->bNew )" )
AAdd( aLine, " p->ph = NULL;" )
ENDIF
AAdd( aLine, "}" )
@@ -1621,7 +1624,8 @@ METHOD HbQtSource:build()
AAdd( aLine, " HBQT_GC_T_" + ::cQtObject + " * p = ( HBQT_GC_T_" + ::cQtObject + " * ) hb_gcAllocate( sizeof( HBQT_GC_T_" + ::cQtObject + " ), hbqt_gcFuncs() );" )
ENDIF
AAdd( aLine, "" )
IF ::isObject
IF ::isObject .AND. ::isConstructor
AAdd( aLine, " new( & p->ph ) QPointer< "+ cObjPfx + ::cQtObject +" >( ( " + cObjPfx + ::cQtObject + " * ) pObj );" )
ELSE
AAdd( aLine, " p->ph = ( " + cObjPfx + ::cQtObject + iif( ::isList, "< void * >", "" ) + " * ) pObj;" )