The crash is here:
hb_vmSend( 0 );
It is inside classes.c, function hb_clsFinalize(), any ideas?
void hb_clsFinalize( PHB_ITEM pObject )
{
HB_THREAD_STUB
USHORT uiClass;
if( HB_IS_OBJECT( pObject ) )
uiClass = pObject->item.asArray.value->uiClass;
else
/* TODO Error!
*/
return;
if( uiClass && uiClass <= s_uiClasses )
{
PCLASS pClass = s_pClasses + ( uiClass - 1 );
if( pClass->pDestructor )
{
if( pClass->uiScope & HB_OO_CLS_DESTRUC_SYMB )
{
assert( hb_stack_ready );
if( s_AllowDestructors /* && hb_stack_ready */ )
{
if( HB_IS_SYMBOL( hb_stackBaseItem() ) &&
(
hb_stackBaseItem()->item.asSymbol.pCargo->uiSuperClass == 0 || ( USHORT
) hb_stackBaseItem()->item.asSymbol.pCargo->uiSuperClass != uiClass ||
( HB_IS_ARRAY( hb_stackSelfItem() ) && hb_stackSelfItem()->item.asArray.value != pObject->item.asArray.value )
) && strcmp( hb_stackBaseItem()->item.asSymbol.value->szName,
"__CLSINSTSUPER" ) )
{
/* To DISABLE GC here where no refernce to this
object will cause GPF for double release!
*/
BOOL bCollecting = hb_gcSetCollecting( TRUE ),
bPop = TRUE;
PHB_SYMB pDestructor = pClass->pDestructor->pMessage->pSymbol;
/* Save the existing Return Value and Top Item if any.
*/
if( HB_IS_ARRAY( &HB_VM_STACK.Return ) && HB_VM_STACK.Return.item.asArray.value == pObject->item.asArray.value )
{
/* Don't process HB_VM_STACK.Return!
*/
bPop = FALSE;
/* Save top item which can be processed at this moment
*/
hb_stackPush();
}
else
hb_vmPushState();
hb_vmPushSymbol( pDestructor );
hb_vmPush( pObject ); /* Do NOT Forward!!! */
hb_vmSend( 0 );
/* Restore the existing Return Value and Top Item if any.
*/
if( bPop )
hb_vmPopState();
else
/* Restore top item
*/
hb_stackDec();
hb_gcSetCollecting( bCollecting );
}
}
else
hb_errInternal( HB_EI_ERRUNRECOV, "Destructors disabled! Destructor of class: '%s' can't be executed.", pClass->szName, NULL );
}
}
}
}
--
Enrico Maria Giordano
http://www.emagsoftware.it
http://www.emagsoftware.it/emgmusic
http://www.emagsoftware.it/spectrum
http://www.emagsoftware.it/tbosg
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)