diff --git a/harbour/source/vm/hvm.c b/harbour/source/vm/hvm.c index 33bef699fc..c857ffbd14 100644 --- a/harbour/source/vm/hvm.c +++ b/harbour/source/vm/hvm.c @@ -604,11 +604,20 @@ void HB_EXPORT hb_vmExecute( const BYTE * pCode, PHB_SYMB pSymbols ) break; case HB_P_SEND: - hb_itemClear( &hb_stack.Return ); + if( ( &hb_stack.Return )->type ) + hb_itemClear( &hb_stack.Return ); + hb_vmSend( pCode[ w + 1 ] + ( pCode[ w + 2 ] * 256 ) ); - hb_itemCopy( hb_stackTopItem(), &hb_stack.Return ); - hb_stackPush(); + w += 3; + + if( pCode[ 3 ] == HB_P_POP ) + w++; + else + { + hb_itemCopy( hb_stackTopItem(), &hb_stack.Return ); + hb_stackPush(); + } break; case HB_P_SENDSHORT: