ChangeLogTag:19991028-14:12 GMT+1 Bruno Cantero <bruno@issnet.net>

This commit is contained in:
Bruno Cantero
1999-10-28 12:24:25 +00:00
parent 37319e3104
commit f602171c64
3 changed files with 47 additions and 5 deletions

View File

@@ -1,3 +1,8 @@
19991028-14:12 GMT+1 Bruno Cantero <bruno@issnet.net>
* source/rdd/dbcmd.c
source/rdd/dbf1.c
* dbCreate(), fixed a bug (mentioned by Victor).
19991027-17:24 GMT+1 Victor Szel <info@szelvesz.hu>
* source/rtl/strings.c
source/rtl/descend.c

View File

@@ -148,9 +148,16 @@ static LPAREANODE pCurrArea = NULL; /* Pointer to a selectd and valid area */
static ERRCODE defAddField( AREAP pArea, LPDBFIELDINFO pFieldInfo )
{
LPFIELD pField;
ULONG ulLen;
HB_TRACE(("defAddField(%p, %p)", pArea, pFieldInfo));
/* Validate the name of field */
ulLen = strlen( ( char * ) pFieldInfo->atomName );
hb_strLTrim( ( char * ) pFieldInfo->atomName, &ulLen );
if( !ulLen )
return FAILURE;
pField = pArea->lpFields + pArea->uiFieldCount;
if( pArea->uiFieldCount > 0 )
{
@@ -263,6 +270,7 @@ static ERRCODE defCreateFields( AREAP pArea, PHB_ITEM pStruct )
USHORT uiCount, uiItems;
PHB_ITEM pFieldDesc;
DBFIELDINFO pFieldInfo;
long lLong;
HB_TRACE(("defCreateFields(%p, %p)", pArea, pStruct));
@@ -274,9 +282,16 @@ static ERRCODE defCreateFields( AREAP pArea, PHB_ITEM pStruct )
pFieldDesc = hb_arrayGetItemPtr( pStruct, uiCount + 1 );
pFieldInfo.uiType = toupper( hb_arrayGetCPtr( pFieldDesc, 2 )[ 0 ] );
pFieldInfo.atomName = ( BYTE * ) hb_arrayGetCPtr( pFieldDesc, 1 );
pFieldInfo.uiLen = ( USHORT ) hb_arrayGetND( pFieldDesc, 3 );
pFieldInfo.uiDec = ( USHORT ) hb_arrayGetND( pFieldDesc, 4 );
SELF_ADDFIELD( pArea, &pFieldInfo );
lLong = hb_arrayGetNL( pFieldDesc, 3 );
if( lLong < 0 )
lLong = 0;
pFieldInfo.uiLen = ( USHORT ) lLong;
lLong = hb_arrayGetNL( pFieldDesc, 4 );
if( lLong < 0 )
lLong = 0;
pFieldInfo.uiDec = ( USHORT ) lLong;
if( SELF_ADDFIELD( pArea, &pFieldInfo ) == FAILURE )
return FAILURE;
}
return SUCCESS;
}
@@ -1464,7 +1479,11 @@ HARBOUR HB_DBCREATE( void )
return;
}
if( strlen( hb_arrayGetCPtr( pFieldDesc, 1 ) ) == 0 )
/* Validate items type, name, size and decimals of field */
if( hb_arrayGetType( pFieldDesc, 1 ) != IT_STRING ||
hb_arrayGetType( pFieldDesc, 2 ) != IT_STRING ||
hb_arrayGetType( pFieldDesc, 3 ) != IT_INTEGER ||
hb_arrayGetType( pFieldDesc, 4 ) != IT_INTEGER )
{
hb_errRT_DBCMD( EG_ARG, 1014, NULL, "DBCREATE" );
return;
@@ -1551,7 +1570,15 @@ HARBOUR HB_DBCREATE( void )
pCurrArea->pNext = NULL;
SELF_NEW( ( AREAP ) pCurrArea->pArea );
SELF_CREATEFIELDS( ( AREAP ) pCurrArea->pArea, pStruct );
if( SELF_CREATEFIELDS( ( AREAP ) pCurrArea->pArea, pStruct ) == FAILURE )
{
SELF_RELEASE( ( AREAP ) pCurrArea->pArea );
hb_xfree( pCurrArea->pArea );
hb_xfree( pCurrArea );
pCurrArea = NULL;
hb_errRT_DBCMD( EG_ARG, 1014, NULL, "DBCREATE" );
return;
}
pFileName = hb_fsFNameSplit( szFileName );
szFileName = ( char * ) hb_xgrab( _POSIX_PATH_MAX + 3 );

View File

@@ -651,6 +651,16 @@ static ERRCODE dbfAddField( AREAP pArea, LPDBFIELDINFO pFieldInfo )
if( SUPER_ADDFIELD( pArea, pFieldInfo ) == SUCCESS )
{
/* Validate the type */
if( pFieldInfo->uiType != 'C' && pFieldInfo->uiType != 'N' &&
pFieldInfo->uiType != 'M' && pFieldInfo->uiType != 'D' &&
pFieldInfo->uiType != 'L' )
return FAILURE;
/* Validate the size */
if( !pFieldInfo->uiLen )
return FAILURE;
if( pArea->lpExtendInfo->fHasMemo )
{
pField = pArea->lpFields + pArea->uiFieldCount - 1;