From 20d82b2ee19ad12986c8d17ef601683c3aa4a1a9 Mon Sep 17 00:00:00 2001 From: Antonio Linares Date: Mon, 18 Mar 2002 13:33:45 +0000 Subject: [PATCH] Fixed bug in Macro Compiler where Field Assignment is compiled mistakenly as a Memvar Assignment. --- harbour/source/vm/macro.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/harbour/source/vm/macro.c b/harbour/source/vm/macro.c index 66c16636ec..4d18c48a30 100644 --- a/harbour/source/vm/macro.c +++ b/harbour/source/vm/macro.c @@ -1191,7 +1191,13 @@ void hb_compGenPopVar( char * szVarName, HB_MACRO_DECL ) } else { - hb_compMemvarGenPCode( HB_P_MPOPMEMVAR, szVarName, HB_MACRO_PARAM ); + HB_DYNS_PTR pSym = hb_dynsymFind( szVarName ); + + if( pSym && ! pSym->hMemvar ) + hb_compMemvarGenPCode( HB_P_MPOPFIELD, szVarName, HB_MACRO_PARAM ); + else + hb_compMemvarGenPCode( HB_P_MPOPMEMVAR, szVarName, HB_MACRO_PARAM ); + hb_compMemvarCheck( szVarName, HB_MACRO_PARAM ); } } @@ -1274,7 +1280,18 @@ void hb_compGenPushVar( char * szVarName, HB_MACRO_DECL ) } else { - hb_compMemvarGenPCode( HB_P_MPUSHVARIABLE, szVarName, HB_MACRO_PARAM ); + HB_DYNS_PTR pSym = hb_dynsymFind( szVarName ); + + if( pSym && pSym->hMemvar ) + hb_compMemvarGenPCode( HB_P_MPUSHMEMVAR, szVarName, HB_MACRO_PARAM ); + + else if( pSym ) + hb_compMemvarGenPCode( HB_P_MPUSHFIELD, szVarName, HB_MACRO_PARAM ); + + else + // Will result in: HB_MACRO_UNKN_SYM + ~HB_MACRO_CONT + hb_compMemvarGenPCode( HB_P_MPUSHVARIABLE, szVarName, HB_MACRO_PARAM ); + hb_compMemvarCheck( szVarName, HB_MACRO_PARAM ); } }