2015-04-01 14:59 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* src/debug/dbgentry.c
    ! fixed typo in my previous commit for AltD() function detection
      Thanks to Franček Prijatelj for reporting the problem and Abe
      for self contain example

  * src/rdd/dbfcdx/dbfcdx1.c
    * reverted byte order in Harbour CDX signature - by mistake I used
      little endian. When existsing index is open then reverted signatures
      are accepted for backward compatiblity though they will be removed
      in the future.

  * src/rdd/workarea.c
    * move results of EVALBLOCK() RDD method from Harbour stack return item
      to workarea valResult item instead of copping it.
    ; Warning: This modification may exploit problems in code which
               wrongly looks for result of EVALBLOCK() RDD method in
               HVM stack return item instead of workarea valResult item.
This commit is contained in:
Przemysław Czerpak
2015-04-01 14:59:26 +02:00
parent f817310638
commit 0b4ed76c12
4 changed files with 25 additions and 4 deletions

View File

@@ -10,6 +10,25 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2015-04-01 14:59 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/debug/dbgentry.c
! fixed typo in my previous commit for AltD() function detection
Thanks to Franček Prijatelj for reporting the problem and Abe
for self contain example
* src/rdd/dbfcdx/dbfcdx1.c
* reverted byte order in Harbour CDX signature - by mistake I used
little endian. When existsing index is open then reverted signatures
are accepted for backward compatiblity though they will be removed
in the future.
* src/rdd/workarea.c
* move results of EVALBLOCK() RDD method from Harbour stack return item
to workarea valResult item instead of copping it.
; Warning: This modification may exploit problems in code which
wrongly looks for result of EVALBLOCK() RDD method in
HVM stack return item instead of workarea valResult item.
2015-03-27 16:21 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/debug/dbgentry.c
% small optimizations

View File

@@ -1555,7 +1555,7 @@ static HB_BOOL hb_dbgIsAltD( void )
HB_ISIZ nOffset = hb_stackBaseProcOffset( 1 );
return nOffset > 0 &&
strcmp( hb_itemGetSymbol( hb_stackItem( nOffset ) )->szName, "ALTD" );
! strcmp( hb_itemGetSymbol( hb_stackItem( nOffset ) )->szName, "ALTD" );
}

View File

@@ -3459,7 +3459,7 @@ static void hb_cdxTagHeaderStore( LPCDXTAG pTag )
tagHeader.indexOpt = pTag->OptFlags;
if( pTag->TagBlock == 0 )
{
HB_PUT_LE_UINT32( tagHeader.signature, CDX_HARBOUR_SIGNATURE );
HB_PUT_BE_UINT32( tagHeader.signature, CDX_HARBOUR_SIGNATURE );
tagHeader.indexSig = pTag->pIndex->fLargeFile ? 0x21 : 0x01;
}
else
@@ -3551,8 +3551,10 @@ static void hb_cdxTagLoad( LPCDXTAG pTag )
{
HB_BOOL fLargeFile = HB_FALSE;
HB_USHORT uiPageLen = CDX_PAGELEN, uiHeaderLen = CDX_HEADERLEN;
HB_U32 u32Sig = HB_GET_BE_UINT32( tagHeader.signature );
if( HB_GET_LE_UINT32( tagHeader.signature ) == CDX_HARBOUR_SIGNATURE )
if( u32Sig == CDX_HARBOUR_SIGNATURE ||
u32Sig == HB_SWAP_UINT32( CDX_HARBOUR_SIGNATURE ) )
{
fLargeFile = tagHeader.indexSig == 0x21;
uiHeaderLen = HB_GET_LE_UINT16( tagHeader.headerLen );

View File

@@ -1830,7 +1830,7 @@ static HB_ERRCODE hb_waEvalBlock( AREAP pArea, PHB_ITEM pBlock )
if( ! pArea->valResult )
pArea->valResult = hb_itemNew( NULL );
hb_itemCopy( pArea->valResult, pItem );
hb_itemMove( pArea->valResult, pItem );
hb_rddSelectWorkAreaNumber( iCurrArea );