diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 7fa38bdc18..98740d8c98 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,8 @@ +19990822-20:02 GMT+1 Bruno Cantero + * source/rdd/dbcmd.c + source/rdd/dbf1.c + * Bug in PutValue removed (again) + 19990822-18:20 GMT+1 Bruno Cantero * include/rddapi.h source/rdd/dbcmd.c diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index 3affe4b3c3..7d57ee383c 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -236,6 +236,7 @@ static ERRCODE Error( AREAP pArea, PHB_ITEM pError ) szRddName = ( char * ) hb_xgrab( HARBOUR_MAX_RDD_DRIVERNAME_LENGTH + 1 ); SELF_SYSNAME( pArea, ( BYTE * ) szRddName ); + hb_errPutSeverity( pError, ES_ERROR ); hb_errPutSubSystem( pError, szRddName ); hb_xfree( szRddName ); return hb_errLaunch( pError ); @@ -837,6 +838,7 @@ HARBOUR HB_DBCREATE( void ) SELF_CREATE( ( AREAP ) pTempArea, &pInfo ); SELF_RELEASE( ( AREAP ) pTempArea ); hb_xfree( szFileName ); + hb_xfree( pFileName ); hb_xfree( pTempArea ); } diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index cdec0ff3f0..99346e5f72 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -227,15 +227,10 @@ static ERRCODE Info( AREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) static ERRCODE Lock( AREAP pArea, LPDBLOCKINFO pLockInfo ) { if( SELF_RAWLOCK( pArea, pLockInfo->uiMethod, pLockInfo->itmRecID ) == SUCCESS ) - { pLockInfo->fResult = TRUE; - return SUCCESS; - } else - { pLockInfo->fResult = FALSE; - return FAILURE; - } + return SUCCESS; } static ERRCODE PutValue( AREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) @@ -245,9 +240,21 @@ static ERRCODE PutValue( AREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) BYTE * szText, * szOldChar, szEndChar; BOOL bError; long lDay, lMonth, lYear; + PHB_ITEM pError; if( uiIndex > pArea->uiFieldCount ) return FAILURE; + + if( !pArea->lpExtendInfo->fExclusive && !pArea->lpExtendInfo->fFileLocked ) + { + pError = hb_errNew(); + hb_errPutGenCode( pError, EG_UNLOCKED ); + hb_errPutDescription( pError, hb_langDGetErrorDesc( EG_UNLOCKED ) ); + hb_errPutSubCode( pError, 1022 ); + SELF_ERROR( pArea, pError ); + hb_errRelease( pError ); + return FAILURE; + } pField = pArea->lpFields; uiOffset = 1; @@ -279,7 +286,7 @@ static ERRCODE PutValue( AREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) if( pItem->type & IT_INTEGER ) { if( pField->uiDec ) - sprintf( ( char * ) szText, "%*.*f", pField->uiLen, pField->uiDec, pItem->item.asInteger.value ); + sprintf( ( char * ) szText, "%*.*f", pField->uiLen, pField->uiDec, ( double ) pItem->item.asInteger.value ); else sprintf( ( char * ) szText, "%*i", pField->uiLen, pItem->item.asInteger.value ); bError = FALSE; @@ -287,9 +294,9 @@ static ERRCODE PutValue( AREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) else if( pItem->type & IT_LONG ) { if( pField->uiDec ) - sprintf( ( char * ) szText, "%*.*f", pField->uiLen, pField->uiDec, pItem->item.asLong.value ); + sprintf( ( char * ) szText, "%*.*f", pField->uiLen, pField->uiDec, ( double ) pItem->item.asLong.value ); else - sprintf( ( char * ) szText, "%*l", pField->uiLen, pItem->item.asLong.value ); + sprintf( ( char * ) szText, "%*ld", pField->uiLen, pItem->item.asLong.value ); bError = FALSE; } else if( pItem->type & IT_DOUBLE ) @@ -297,7 +304,7 @@ static ERRCODE PutValue( AREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) if( pField->uiDec ) sprintf( ( char * ) szText, "%*.*f", pField->uiLen, pField->uiDec, pItem->item.asDouble.value ); else - sprintf( ( char * ) szText, "%*l", pField->uiLen, pItem->item.asDouble.value ); + sprintf( ( char * ) szText, "%*ld", pField->uiLen, ( long ) pItem->item.asDouble.value ); bError = FALSE; } break; @@ -326,7 +333,12 @@ static ERRCODE PutValue( AREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) if( bError ) { - printf( "Error 1020 EG_DATATYPE\n" ); + pError = hb_errNew(); + hb_errPutGenCode( pError, EG_DATATYPE ); + hb_errPutDescription( pError, hb_langDGetErrorDesc( EG_DATATYPE ) ); + hb_errPutSubCode( pError, 1020 ); + SELF_ERROR( pArea, pError ); + hb_errRelease( pError ); return FAILURE; } return SUCCESS; @@ -575,7 +587,7 @@ static RDDFUNCS dbfTable = { 0, /* Super Bof */ PutValue, 0, /* Super Recall */ RecCount, - 0, /* Super RecNo */ + RecNo, 0, /* Super SetFieldsExtent */ 0, /* Super Close */ 0, /* Super Create */