From 0b4ed76c123ef60a8c4f093faef0185f4da3e767 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Czerpak?= Date: Wed, 1 Apr 2015 14:59:26 +0200 Subject: [PATCH] =?UTF-8?q?2015-04-01=2014:59=20UTC+0200=20Przemyslaw=20Cz?= =?UTF-8?q?erpak=20(druzus/at/poczta.onet.pl)=20=20=20*=20src/debug/dbgent?= =?UTF-8?q?ry.c=20=20=20=20=20!=20fixed=20typo=20in=20my=20previous=20comm?= =?UTF-8?q?it=20for=20AltD()=20function=20detection=20=20=20=20=20=20=20Th?= =?UTF-8?q?anks=20to=20Fran=C4=8Dek=20Prijatelj=20for=20reporting=20the=20?= =?UTF-8?q?problem=20and=20Abe=20=20=20=20=20=20=20for=20self=20contain=20?= =?UTF-8?q?example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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. --- ChangeLog.txt | 19 +++++++++++++++++++ src/debug/dbgentry.c | 2 +- src/rdd/dbfcdx/dbfcdx1.c | 6 ++++-- src/rdd/workarea.c | 2 +- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index f31b6dc0c5..d584153b9c 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -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 diff --git a/src/debug/dbgentry.c b/src/debug/dbgentry.c index 3625a907b8..cc36d143f1 100644 --- a/src/debug/dbgentry.c +++ b/src/debug/dbgentry.c @@ -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" ); } diff --git a/src/rdd/dbfcdx/dbfcdx1.c b/src/rdd/dbfcdx/dbfcdx1.c index 863a730191..e7426bd9a8 100644 --- a/src/rdd/dbfcdx/dbfcdx1.c +++ b/src/rdd/dbfcdx/dbfcdx1.c @@ -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 ); diff --git a/src/rdd/workarea.c b/src/rdd/workarea.c index e3000bee68..c6953afc9a 100644 --- a/src/rdd/workarea.c +++ b/src/rdd/workarea.c @@ -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 );