From ded93951c07879d96be05a4cee557aab2d3ec61a Mon Sep 17 00:00:00 2001 From: Ryszard Glab Date: Tue, 2 May 2000 15:08:25 +0000 Subject: [PATCH] ChangeLog 20000502-17:15 GMT+1 --- harbour/ChangeLog | 14 ++++++++++++++ harbour/makefile.bc | 8 ++++---- harbour/source/rtl/Makefile | 1 - harbour/source/vm/Makefile | 1 + harbour/source/{rtl => vm}/eval.c | 6 +++++- 5 files changed, 24 insertions(+), 6 deletions(-) rename harbour/source/{rtl => vm}/eval.c (89%) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 726153a687..b6809363bf 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,17 @@ +20000502-17:15 GMT+1 Ryszard Glab + + *makefile.bc + *source/rtl/Makefile + *source/vm/Makefile + -source/rtl/eval.c + +source/vm/eval.c + * fixed bug in EVAL function when a parameter was passed using + the reference + * since the EVAL function is using a direct stack access instead + of hb_param() function the file eval.c is now moved into + VM directory + + 20000502-16:22 GMT+1 Ryszard Glab *source/compiler/harbour.l diff --git a/harbour/makefile.bc b/harbour/makefile.bc index 0c9572e5be..ec90833792 100644 --- a/harbour/makefile.bc +++ b/harbour/makefile.bc @@ -817,6 +817,10 @@ $(OBJ_DIR)\dynsym.obj : $(VM_DIR)\dynsym.c $(CC) $(CLIBFLAGS) -o$@ $** tlib $(VM_LIB) $(ARFLAGS) -+$@,, +$(OBJ_DIR)\eval.obj : $(VM_DIR)\eval.c + $(CC) $(CLIBFLAGS) -o$@ $** + tlib $(VM_LIB) $(ARFLAGS) -+$@,, + $(OBJ_DIR)\extend.obj : $(VM_DIR)\extend.c $(CC) $(CLIBFLAGS) -o$@ $** tlib $(VM_LIB) $(ARFLAGS) -+$@,, @@ -1077,10 +1081,6 @@ $(OBJ_DIR)\errorsys.obj : $(OBJ_DIR)\errorsys.c $(CC) $(CLIBFLAGS) -o$@ $** tlib $(RTL_LIB) $(ARFLAGS) -+$@,, -$(OBJ_DIR)\eval.obj : $(RTL_DIR)\eval.c - $(CC) $(CLIBFLAGS) -o$@ $** - tlib $(RTL_LIB) $(ARFLAGS) -+$@,, - $(OBJ_DIR)\fieldbl.c : $(RTL_DIR)\fieldbl.prg $(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@ diff --git a/harbour/source/rtl/Makefile b/harbour/source/rtl/Makefile index f1ca47deca..0b660ffabc 100644 --- a/harbour/source/rtl/Makefile +++ b/harbour/source/rtl/Makefile @@ -28,7 +28,6 @@ C_SOURCES=\ do.c \ empty.c \ errorapi.c \ - eval.c \ filesys.c \ fkmax.c \ fnsplit.c \ diff --git a/harbour/source/vm/Makefile b/harbour/source/vm/Makefile index 1bf092836e..3475b2075a 100644 --- a/harbour/source/vm/Makefile +++ b/harbour/source/vm/Makefile @@ -14,6 +14,7 @@ C_SOURCES=\ debug.c \ dynsym.c \ codebloc.c \ + eval.c \ extend.c \ fm.c \ hvm.c \ diff --git a/harbour/source/rtl/eval.c b/harbour/source/vm/eval.c similarity index 89% rename from harbour/source/rtl/eval.c rename to harbour/source/vm/eval.c index d8fefc27db..4e4f437352 100644 --- a/harbour/source/rtl/eval.c +++ b/harbour/source/vm/eval.c @@ -49,8 +49,12 @@ HB_FUNC( EVAL ) hb_vmPushSymbol( &hb_symEval ); hb_vmPush( pItem ); + /* NOTE: hb_param(0 function cannot be used for parameter access + * because we need to pass the references too. + * hb_param() is dereferencing the passed parameters + */ for( uiParam = 2; uiParam <= uiPCount; uiParam++ ) - hb_vmPush( hb_param( uiParam, HB_IT_ANY ) ); + hb_vmPush( hb_stack.pBase + 1 + uiParam ); hb_vmDo( uiPCount - 1 ); } else