diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 98d4f183cb..0c607475e7 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,10 @@ +19991015-18:45 GMT+1 Bruno Cantero + * source/rdd/dbcmd.c + * Bug removed, default alias work if not alias and extension is specified. + + * source/rdd/dbf1.c + * Bug removed, Bof() now work properly. + 19991015-09:53 GMT+3 Alexander Kresin * source/pp/hbpp.c * Fixed little bug, reported by Antonio Linares diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index e50829d451..7667ec7f64 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -1777,14 +1777,15 @@ HARBOUR HB_DBUNLOCKALL( void ) HARBOUR HB_DBUSEAREA( void ) { - char * szDriver, * szFileName, * szAlias; + char * szDriver, * szFileName; LPRDDNODE pRddNode; LPAREANODE pAreaNode; USHORT uiSize, uiRddID, uiLen; DBOPENINFO pInfo; PHB_FNAME pFileName; PHB_ITEM pFileExt; - char cDriverBuffer[ HARBOUR_MAX_RDD_DRIVERNAME_LENGTH ]; + char szDriverBuffer[ HARBOUR_MAX_RDD_DRIVERNAME_LENGTH + 1 ]; + char szAlias[ HARBOUR_MAX_RDD_ALIAS_LENGTH + 1]; bNetError = FALSE; @@ -1814,8 +1815,10 @@ HARBOUR HB_DBUSEAREA( void ) uiLen = hb_parclen( 2 ); if( uiLen > 0 ) { - hb_strncpyUpper( cDriverBuffer, hb_parc( 2 ), uiLen ); - szDriver = cDriverBuffer; + if( uiLen > HARBOUR_MAX_RDD_DRIVERNAME_LENGTH ) + uiLen = HARBOUR_MAX_RDD_DRIVERNAME_LENGTH; + hb_strncpyUpper( szDriverBuffer, hb_parc( 2 ), uiLen ); + szDriver = szDriverBuffer; } else szDriver = szDefDriver; @@ -1836,9 +1839,9 @@ HARBOUR HB_DBUSEAREA( void ) } pFileName = hb_fsFNameSplit( szFileName ); - szAlias = hb_parc( 4 ); + strncpy( szAlias, hb_parc( 4 ), HARBOUR_MAX_RDD_ALIAS_LENGTH ); if( strlen( szAlias ) == 0 ) - szAlias = pFileName->szName; + strncpy( szAlias, pFileName->szName, HARBOUR_MAX_RDD_ALIAS_LENGTH ); /* Create a new WorkArea node */ diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index ca8c60a1a9..12961380b5 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -1011,11 +1011,15 @@ static ERRCODE dbfGoTo( AREAP pArea, ULONG lRecNo ) if( lRecNo > lRecCount + 1 ) lRecNo = lRecCount + 1; - if( lRecNo == lRecCount + 1 ) - pArea->fEof = 1; + if( lRecNo <= 0 ) + { + pArea->fBof = 1; + lRecNo = 1; + } else - pArea->fEof = 0; - pArea->fBof = ( lRecNo == 1 ); + pArea->fBof = ( lRecNo == 1 && pArea->fBof ); + + pArea->fEof = ( lRecNo == lRecCount + 1 ); } pArea->lpExtendInfo->lRecNo = lRecNo; @@ -1051,6 +1055,7 @@ static ERRCODE dbfGoToId( AREAP pArea, PHB_ITEM pItem ) static ERRCODE dbfGoTop( AREAP pArea ) { + pArea->fBof = 0; SELF_GOTO( pArea, 1 ); return SELF_SKIPFILTER( pArea, 1 ); }