2008-05-30 00:15 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/source/vm/estack.c
    * declare hb_stack as static variable when HB_STACK_MACROS is
      disabled to be sure that non extern code will access hb_stack
      It's very important to eliminate such code before we add MT
      support.

  * harbour/source/vm/hvm.c
    * changed hb_vmFrame() to work in the same way as hb_vmVFrame()

  * harbour/source/rtl/hbgtcore.c
    ! fixed wrong clear column in right horizontal scrolling

  * harbour/source/rtl/memoedit.prg
    * use hb_inkeySetLast( n ) instead of KEYBOARD Chr( n ) ; InKey()
This commit is contained in:
Przemyslaw Czerpak
2008-05-29 22:15:25 +00:00
parent f42f92f69c
commit f5043f6a64
5 changed files with 65 additions and 23 deletions

View File

@@ -8,6 +8,22 @@
2008-12-31 13:59 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2008-05-30 00:15 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/estack.c
* declare hb_stack as static variable when HB_STACK_MACROS is
disabled to be sure that non extern code will access hb_stack
It's very important to eliminate such code before we add MT
support.
* harbour/source/vm/hvm.c
* changed hb_vmFrame() to work in the same way as hb_vmVFrame()
* harbour/source/rtl/hbgtcore.c
! fixed wrong clear column in right horizontal scrolling
* harbour/source/rtl/memoedit.prg
* use hb_inkeySetLast( n ) instead of KEYBOARD Chr( n ) ; InKey()
2008-05-29 20:56 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* make_b32.mak
- HB_NO_BCC_MAX_OPENFILES_HACK - no longer used.

View File

@@ -1071,7 +1071,7 @@ static void hb_gt_def_Scroll( PHB_GT pGT, int iTop, int iLeft, int iBottom, int
{
iColOld += iCols;
iColSize -= iCols;
iColClear = iColOld + iColSize - 1;
iColClear = iColNew + iColSize + 1;
iClrs = iCols;
}
else
@@ -1145,7 +1145,7 @@ static void hb_gt_def_ScrollArea( PHB_GT pGT, int iTop, int iLeft, int iBottom,
{
iColOld += iCols;
iColSize -= iCols;
iColClear = iColOld + iColSize - 1;
iColClear = iColNew + iColSize + 1;
iClrs = iCols;
}
else

View File

@@ -303,8 +303,7 @@ FUNCTION MemoEdit( cString,;
IF oEd:Changed()
cString := oEd:GetText()
// dbu tests for LastKey() == K_CTRL_END, so I try to make it happy
KEYBOARD Chr( K_CTRL_END )
Inkey()
HB_SetLastKey( K_CTRL_END )
ENDIF
ENDIF

View File

@@ -67,7 +67,11 @@
#define STACK_EXPANDHB_ITEMS 20
#endif
HB_STACK hb_stack;
#if defined( HB_STACK_MACROS )
HB_STACK hb_stack;
#else
static HB_STACK hb_stack;
#endif
static HB_SYMB s_initSymbol = { "hb_stackInit", { HB_FS_STATIC }, { NULL }, NULL };
@@ -259,7 +263,7 @@ HB_ITEM_PTR hb_stackNewFrame( PHB_STACK_STATE pStack, USHORT uiParams )
pItem->item.asSymbol.stackstate = pStack;
pItem->item.asSymbol.paramcnt = uiParams;
/* set default value of 'paramdeclcnt' - it will be updated
* in hb_vmVFrame only
* in hb_vm[V]Frame only
*/
pItem->item.asSymbol.paramdeclcnt = uiParams;
hb_stack.pBase = pBase;

View File

@@ -5285,48 +5285,71 @@ static void hb_vmDebuggerShowLine( USHORT uiLine ) /* makes the debugger shows a
static void hb_vmFrame( USHORT usLocals, BYTE bParams )
{
int iTotal, iExtra;
int ipcount = hb_pcount();
PHB_ITEM pBase;
int iTotal;
HB_TRACE(HB_TR_DEBUG, ("hb_vmFrame(%d, %d)", (int) usLocals, (int) bParams));
iExtra = ipcount - bParams;
pBase = hb_stackBaseItem();
if( iExtra > 0 )
#if 0
/* This old code which clears additional parameters to make space for
* local variables without updating pBase->item.asSymbol.paramdeclcnt
*/
iTotal = pBase->item.asSymbol.paramcnt - bParams;
if( iTotal > 0 )
{
hb_stackBaseItem()->item.asSymbol.paramcnt = bParams;
while( iExtra > 0 )
{
hb_itemClear( hb_stackItemFromTop( -iExtra ) );
iExtra--;
}
pBase->item.asSymbol.paramcnt = bParams;
do
hb_itemClear( hb_stackItemFromTop( -iTotal ) );
while( --iTotal > 0 );
}
iTotal = usLocals + bParams;
if( iTotal )
{
iTotal -= ipcount;
iTotal -= pBase->item.asSymbol.paramcnt;
while( --iTotal >= 0 )
hb_vmPushNil();
}
#else
pBase->item.asSymbol.paramdeclcnt = bParams;
iTotal = bParams - pBase->item.asSymbol.paramcnt;
if( iTotal < 0 )
iTotal = 0;
iTotal += usLocals;
if( iTotal )
{
do
hb_vmPushNil();
while( --iTotal > 0 );
}
#endif
}
static void hb_vmVFrame( USHORT usLocals, BYTE bParams )
{
PHB_ITEM pBase;
int iTotal;
HB_TRACE(HB_TR_DEBUG, ("hb_vmVFrame(%d, %d)", (int) usLocals, (int) bParams));
hb_stackBaseItem()->item.asSymbol.paramdeclcnt = bParams;
pBase = hb_stackBaseItem();
pBase->item.asSymbol.paramdeclcnt = bParams;
iTotal = bParams - pBase->item.asSymbol.paramcnt;
if( iTotal < 0 )
iTotal = 0;
iTotal += usLocals;
if( hb_pcount() < bParams )
iTotal = usLocals + bParams - hb_pcount();
else
iTotal = usLocals;
if( iTotal )
{
while( --iTotal >= 0 )
do
hb_vmPushNil();
while( --iTotal > 0 );
}
}