2014-12-05 01:33 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* src/common/hbffind.c
  * src/common/hbfsapi.c
  * src/rtl/filebuf.c
  * src/rtl/fssize.c
  * contrib/hbmzip/mzip.c
  * contrib/xhb/filestat.c
    ! typo in comment - thanks to Viktor

  * include/hbexprb.c
    * small code reorganization

  * include/hbvmpub.h
  * src/vm/hvm.c
    % use HB_VM_PUSHNIL() macro
    ! generate RTE for code like:
         LOCAL aVar[ 10, -1 ]
      (Cl*pper compatible)
This commit is contained in:
Przemysław Czerpak
2014-12-05 01:33:30 +01:00
parent 86e8c25df5
commit 513f8824df
10 changed files with 78 additions and 65 deletions

View File

@@ -2109,14 +2109,22 @@ static HB_EXPR_FUNC( hb_compExprUseFunCall )
HB_BOOL fArgsList = HB_FALSE;
HB_USHORT usCount = 0;
/* NOTE: pParms will be NULL in 'DO procname' (if there is
* no WITH keyword)
*/
if( pSelf->value.asFunCall.pParms )
{
usCount = ( HB_USHORT ) hb_compExprParamListCheck( HB_COMP_PARAM, pSelf->value.asFunCall.pParms );
fArgsList = pSelf->value.asFunCall.pParms->ExprType == HB_ET_MACROARGLIST;
}
if( pSelf->value.asFunCall.pFunName->ExprType == HB_ET_FUNNAME )
{
if( pSelf->value.asFunCall.pFunName->value.asSymbol.funcid == HB_F_ARRAYTOPARAMS )
if( ! fArgsList )
{
usCount = ( HB_USHORT ) hb_compExprParamListCheck( HB_COMP_PARAM, pSelf->value.asFunCall.pParms );
if( usCount == 1 &&
( pSelf->value.asFunCall.pFunName->value.asSymbol.flags & HB_FN_MULTIARG ) != 0 &&
pSelf->value.asFunCall.pParms->ExprType != HB_ET_MACROARGLIST )
if( pSelf->value.asFunCall.pFunName->value.asSymbol.funcid == HB_F_ARRAYTOPARAMS &&
usCount == 1 &&
( pSelf->value.asFunCall.pFunName->value.asSymbol.flags & HB_FN_MULTIARG ) != 0 )
{
HB_EXPR_USE( pSelf->value.asFunCall.pParms, HB_EA_PUSH_PCODE );
HB_GEN_FUNC1( PCode1, HB_P_PUSHAPARAMS );
@@ -2132,16 +2140,8 @@ static HB_EXPR_FUNC( hb_compExprUseFunCall )
HB_GEN_FUNC1( PCode1, HB_P_PUSHNIL );
}
/* NOTE: pParms will be NULL in 'DO procname' (if there is
* no WITH keyword)
*/
if( pSelf->value.asFunCall.pParms )
{
usCount = ( HB_USHORT ) hb_compExprParamListCheck( HB_COMP_PARAM, pSelf->value.asFunCall.pParms );
fArgsList = pSelf->value.asFunCall.pParms->ExprType == HB_ET_MACROARGLIST;
if( usCount )
HB_EXPR_USE( pSelf->value.asFunCall.pParms, HB_EA_PUSH_PCODE );
}
if( usCount )
HB_EXPR_USE( pSelf->value.asFunCall.pParms, HB_EA_PUSH_PCODE );
if( fArgsList )
{