diff --git a/harbour/source/compiler/harbour.sly b/harbour/source/compiler/harbour.sly index e65c2351c6..464ee9e8ee 100644 --- a/harbour/source/compiler/harbour.sly +++ b/harbour/source/compiler/harbour.sly @@ -521,7 +521,7 @@ Variable : IdentName { $$ = hb_compExprNewVar( $1 ); if( s_bBlock ) { - s_bBlockDeclared = ( s_bBlockDeclared || hb_compLocalGetPos( $1 ) || hb_compStaticGetPos( $1, hb_comp_functions.pLast ) ); + s_bBlockDeclared = ( s_bBlockDeclared || hb_compLocalGetPos( $1 ) || hb_compStaticGetPos( $1, hb_comp_functions.pLast ) || ( hb_comp_bStartProc == FALSE && hb_compStaticGetPos( $1, hb_comp_functions.pFirst ) ) ); } } ; @@ -534,7 +534,7 @@ VarAlias : IdentName ALIASOP { $$ = hb_compExprNewAlias( $1 ); } MacroVar : MACROVAR { $$ = hb_compExprNewMacro( NULL, '&', $1 ); if( s_bBlock ) { - s_bBlockDeclared = s_bBlockDeclared || hb_compLocalGetPos( $1 ) || hb_compStaticGetPos( $1, hb_comp_functions.pLast ); + s_bBlockDeclared = ( s_bBlockDeclared || hb_compLocalGetPos( $1 ) || hb_compStaticGetPos( $1, hb_comp_functions.pLast ) || ( hb_comp_bStartProc == FALSE && hb_compStaticGetPos( $1, hb_comp_functions.pFirst ) ) ); s_bBlockMacro = TRUE; } } @@ -1088,6 +1088,7 @@ GetVar : Variable { s_bSetGet = ( hb_compLocalGetPos( $1->value.asSymbol ) || hb_compStaticGetPos( $1->value.asSymbol, hb_comp_functions.pLast ) || + ( hb_comp_bStartProc == FALSE && hb_compStaticGetPos( $1->value.asSymbol, hb_comp_functions.pFirst ) ) || hb_compMemvarGetPos( $1->value.asSymbol, hb_comp_functions.pLast ) || hb_compFieldGetPos( $1->value.asSymbol, hb_comp_functions.pLast ) ); $$ = $1; diff --git a/harbour/source/vm/memvars.c b/harbour/source/vm/memvars.c index 4e60d1b77e..7288ad34c2 100644 --- a/harbour/source/vm/memvars.c +++ b/harbour/source/vm/memvars.c @@ -1152,10 +1152,11 @@ HB_FUNC( __MVDBGINFO ) HB_FUNC( __ISMV ) { HB_ITEM_PTR pName = hb_param( 1, HB_IT_STRING ); + PHB_DYNS pDyn = NULL ; if( pName ) { - hb_retl( hb_memvarFindSymbol( pName ) ? 1 : 0 ); + hb_retl( ( ( pDyn = hb_memvarFindSymbol( pName ) ) && pDyn->hMemvar ) ? 1 : 0 ); } else { @@ -1586,7 +1587,7 @@ HB_HANDLE hb_memvarGetVarHandle( char *szName ) return pDyn->hMemvar; else return 0; /* invalid handle */ -} +} PHB_ITEM hb_memvarGetValueByHandle( HB_HANDLE hMemvar ) { @@ -1594,4 +1595,4 @@ PHB_ITEM hb_memvarGetValueByHandle( HB_HANDLE hMemvar ) return &s_globalTable[ hMemvar ].item; else return NULL; -} \ No newline at end of file +}