From f86b9acb5d4a1199ffe7d03c48a040a2bef92f05 Mon Sep 17 00:00:00 2001 From: Przemyslaw Czerpak Date: Mon, 11 Jun 2007 09:32:03 +0000 Subject: [PATCH] 2007-06-11 11:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/source/compiler/genc.c * allow to use #pragma begindump / enddump in .prg files without any .prg code * harbour/source/vm/hvm.c ! fixed assign in overloaded [] --- harbour/ChangeLog | 8 ++++++++ harbour/source/compiler/genc.c | 25 ++++++++++++++++++++++++- harbour/source/vm/hvm.c | 8 ++++---- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 89181702e8..705962403a 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,14 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-06-11 11:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/source/compiler/genc.c + * allow to use #pragma begindump / enddump in .prg files without + any .prg code + + * harbour/source/vm/hvm.c + ! fixed assign in overloaded [] + 2007-06-08 14:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/contrib/rdd_ads/ads1.c ! generate valid RT errors in some methods so NETERR() can be diff --git a/harbour/source/compiler/genc.c b/harbour/source/compiler/genc.c index fabcb9b5a4..9efcddc2c2 100644 --- a/harbour/source/compiler/genc.c +++ b/harbour/source/compiler/genc.c @@ -332,7 +332,30 @@ void hb_compGenCCode( HB_COMP_DECL, PHB_FNAME pFileName ) /* generates the } else { - fprintf( yyc, "/* Empty source file */\n\n" ); + pInline = HB_COMP_PARAM->inlines.pFirst; + while( pInline ) + { + if( pInline->pCode ) + { + if( !bIsInlineFunction ) + { + fprintf( yyc, "#include \"hbvmpub.h\"\n" ); + if( HB_COMP_PARAM->iGenCOutput != HB_COMPGENC_COMPACT ) + fprintf( yyc, "#include \"hbpcode.h\"\n" ); + fprintf( yyc, "#include \"hbinit.h\"\n" ); + if( HB_COMP_PARAM->iGenCOutput == HB_COMPGENC_REALCODE ) + fprintf( yyc, "#include \"hbxvm.h\"\n" ); + bIsInlineFunction = TRUE; + } + fprintf( yyc, "#line %i \"%s\"\n", pInline->iLine, pInline->szFileName ); + if( pInline->szName ) + fprintf( yyc, "HB_FUNC_STATIC( %s )\n", pInline->szName ); + fprintf( yyc, "%s", pInline->pCode ); + } + pInline = pInline->pNext; + } + if( !bIsInlineFunction ) + fprintf( yyc, "\n/* Empty source file */\n" ); } fclose( yyc ); diff --git a/harbour/source/vm/hvm.c b/harbour/source/vm/hvm.c index e3b691e714..893b220c8c 100644 --- a/harbour/source/vm/hvm.c +++ b/harbour/source/vm/hvm.c @@ -4309,7 +4309,7 @@ static void hb_vmArrayPop( void ) if( HB_IS_ARRAY( pArray ) ) { if( HB_IS_OBJECT( pArray ) && - hb_objOperatorCall( HB_OO_OP_ARRAYINDEX, pArray, pArray, pIndex, pValue ) ) + hb_objOperatorCall( HB_OO_OP_ARRAYINDEX, pValue, pArray, pIndex, pValue ) ) { hb_stackPop(); hb_stackPop(); @@ -4358,7 +4358,7 @@ static void hb_vmArrayPop( void ) 3, pArray, pIndex, pValue ); } /* #endif */ - else if( hb_objOperatorCall( HB_OO_OP_ARRAYINDEX, pArray, pArray, pIndex, pValue ) ) + else if( hb_objOperatorCall( HB_OO_OP_ARRAYINDEX, pValue, pArray, pIndex, pValue ) ) { hb_stackPop(); hb_stackPop(); @@ -8841,7 +8841,7 @@ static void hb_vmArrayItemPop( ULONG ulIndex ) if( HB_IS_OBJECT( pArray ) && hb_objHasOperator( pArray, HB_OO_OP_ARRAYINDEX ) ) { hb_vmPushNumInt( ulIndex ); - hb_objOperatorCall( HB_OO_OP_ARRAYINDEX, pArray, pArray, + hb_objOperatorCall( HB_OO_OP_ARRAYINDEX, pValue, pArray, hb_stackItemFromTop( -1 ), pValue ); hb_stackPop(); hb_stackPop(); @@ -8914,7 +8914,7 @@ static void hb_vmArrayItemPop( ULONG ulIndex ) else if( hb_objHasOperator( pArray, HB_OO_OP_ARRAYINDEX ) ) { hb_vmPushNumInt( ulIndex ); - hb_objOperatorCall( HB_OO_OP_ARRAYINDEX, pArray, pArray, + hb_objOperatorCall( HB_OO_OP_ARRAYINDEX, pValue, pArray, hb_stackItemFromTop( -1 ), pValue ); hb_stackPop(); hb_stackPop();