2010-02-03 11:15 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/rdd/dbfcdx/dbfcdx1.c
! do not verify FOR expression just after loading new index file
in SIXCDX RDD. It's CL52 DBFCDX / SIX3 SIXCDX compatible behavior
but Harbour DBFCDX and CL53 DBFCDX / COMIX verifies both KEY and
FOR expressions when index is loaded.
! fixed RTE numbers to be CL53 compatible when index with wrong
(returning wrong results) KEY or FOR expression is loaded.
This commit is contained in:
@@ -17,6 +17,15 @@
|
||||
past entries belonging to author(s): Viktor Szakats.
|
||||
*/
|
||||
|
||||
2010-02-03 11:15 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/src/rdd/dbfcdx/dbfcdx1.c
|
||||
! do not verify FOR expression just after loading new index file
|
||||
in SIXCDX RDD. It's CL52 DBFCDX / SIX3 SIXCDX compatible behavior
|
||||
but Harbour DBFCDX and CL53 DBFCDX / COMIX verifies both KEY and
|
||||
FOR expressions when index is loaded.
|
||||
! fixed RTE numbers to be CL53 compatible when index with wrong
|
||||
(returning wrong results) KEY or FOR expression is loaded.
|
||||
|
||||
2010-02-03 03:45 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/src/vm/hvm.c
|
||||
* harbour/src/vm/itemapi.c
|
||||
|
||||
@@ -3563,8 +3563,19 @@ static void hb_cdxTagLoad( LPCDXTAG pTag )
|
||||
{
|
||||
pTag->pForItem = pTag->pIndex->pArea->dbfarea.area.valResult;
|
||||
pTag->pIndex->pArea->dbfarea.area.valResult = NULL;
|
||||
|
||||
/* CL52 / SIXCDX when index is open evaluates only KEY expression
|
||||
* and do not check the FOR one.
|
||||
* CL53 / COMIX evaluates both KEY and FOR expressions.
|
||||
*/
|
||||
#if !defined( HB_SIXCDX )
|
||||
if( hb_cdxItemType( hb_vmEvalBlockOrMacro( pTag->pForItem ) ) != 'L' )
|
||||
{
|
||||
hb_cdxErrorRT( pTag->pIndex->pArea, EG_DATATYPE, EDBF_INVALIDFOR,
|
||||
NULL, 0, 0, NULL );
|
||||
pTag->RootBlock = 0; /* To force RT error - index corrupted */
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
SELF_GOTO( ( AREAP ) pTag->pIndex->pArea, ulRecNo );
|
||||
@@ -3575,6 +3586,9 @@ static void hb_cdxTagLoad( LPCDXTAG pTag )
|
||||
( pTag->uiType == 'T' && pTag->uiLen != 8 ) ||
|
||||
( pTag->uiType == 'L' && pTag->uiLen != 1 ) )
|
||||
{
|
||||
hb_cdxErrorRT( pTag->pIndex->pArea,
|
||||
pTag->uiType == 'U' ? EG_DATATYPE : EG_DATAWIDTH,
|
||||
EDBF_INVALIDKEY, NULL, 0, 0, NULL );
|
||||
pTag->RootBlock = 0; /* To force RT error - index corrupted */
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user