From 76caa3b4d5752fbec7e7332076e115a094e45c0c Mon Sep 17 00:00:00 2001 From: Bruno Cantero Date: Sun, 21 Nov 1999 00:32:19 +0000 Subject: [PATCH] ChangeLogTag:19991121-01:20 GMT+1 Bruno Cantero --- harbour/ChangeLog | 4 ++++ harbour/source/rdd/dbcmd.c | 22 +++++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 3cec5a1ac9..c5afdf084d 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,7 @@ +19991121-01:20 GMT+1 Bruno Cantero + * source/rdd/dbcmd.c + * dbUseArea(), fixed two bugs mentioned by Victor. + 19991120-17:28 EDT Paul Tucker * makefile.vc - hbfsapi for harbour.exe diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index cae9c4871f..29e05b41ca 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -923,7 +923,7 @@ ERRCODE hb_rddInherit( PRDDFUNCS pTable, PRDDFUNCS pSubTable, PRDDFUNCS pSuperTa else { szSuperName = ( char * ) hb_xgrab( uiCount + 1 ); - hb_strncpyUpper( szSuperName, (char *)szDrvName, uiCount ); + hb_strncpyUpper( szSuperName, ( char * ) szDrvName, uiCount ); pRddNode = hb_rddFindNode( szSuperName, 0 ); hb_xfree( szSuperName ); if( !pRddNode ) @@ -1617,6 +1617,8 @@ HARBOUR HB_DBCREATE( void ) pAreaNode->pPrev = pCurrArea; if( pCurrArea->pPrev ) pCurrArea->pPrev->pNext = pCurrArea; + else + pWorkAreas = pCurrArea; break; } if( pAreaNode->pNext ) @@ -2279,11 +2281,12 @@ HARBOUR HB_DBUSEAREA( void ) LPRDDNODE pRddNode; LPAREANODE pAreaNode; USHORT uiSize, uiRddID, uiLen; + ULONG ulLen; DBOPENINFO pInfo; PHB_FNAME pFileName; PHB_ITEM pFileExt; char szDriverBuffer[ HARBOUR_MAX_RDD_DRIVERNAME_LENGTH + 1 ]; - char szAlias[ HARBOUR_MAX_RDD_ALIAS_LENGTH + 1]; + char szAlias[ HARBOUR_MAX_RDD_ALIAS_LENGTH + 1 ]; bNetError = FALSE; @@ -2342,8 +2345,19 @@ HARBOUR HB_DBUSEAREA( void ) pFileName = hb_fsFNameSplit( szFileName ); strncpy( szAlias, hb_parc( 4 ), HARBOUR_MAX_RDD_ALIAS_LENGTH ); - if( strlen( szAlias ) == 0 ) + ulLen = strlen( szAlias ); + if( ulLen == 0 ) strncpy( szAlias, pFileName->szName, HARBOUR_MAX_RDD_ALIAS_LENGTH ); + else if( ulLen == 1 ) + { + /* Alias with a single letter. Only are valid 'L' and > 'M' */ + if( toupper( szAlias[ 0 ] ) < 'N' && toupper( szAlias[ 0 ] ) != 'L' ) + { + hb_xfree( pFileName ); + hb_errRT_DBCMD( EG_DUPALIAS, 1011, NULL, "DBUSEAREA" ); + return; + } + } /* Create a new WorkArea node */ @@ -2412,6 +2426,8 @@ HARBOUR HB_DBUSEAREA( void ) pAreaNode->pPrev = pCurrArea; if( pCurrArea->pPrev ) pCurrArea->pPrev->pNext = pCurrArea; + else + pWorkAreas = pCurrArea; break; } if( pAreaNode->pNext )