diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 347d074326..b2cc81b726 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,11 @@ 2002-12-01 23:12 UTC+0100 Foo Bar */ +2003-05-09 14:40 UTC-0400 David G. Holm + * source/rdd/dbcmd.c + ! Fixed the FIELDPOS function to truncate long field names, + instead of ignoring them. + 2003-05-08 15:30 UTC-0400 David G. Holm * source/compiler/harbour.sly ! Fixed $3 in EmptyStatements to read $2. diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index 14835c3ffc..8f08a7201c 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -2127,13 +2127,21 @@ HB_FUNC( FIELDPOS ) { /* char szName[ HARBOUR_MAX_RDD_FIELDNAME_LENGTH ]; */ char * szName; + size_t uiMax; + size_t uiLen; if( s_pCurrArea ) { - if ( hb_parc( 1 ) && ( (int) hb_parclen( 1 ) <= (int) ( ( AREAP ) s_pCurrArea->pArea)->uiMaxFieldNameLength ) ) + if ( hb_parc( 1 ) ) { - szName = ( char * ) hb_xgrab( ( ( AREAP ) s_pCurrArea->pArea)->uiMaxFieldNameLength + 1 ); - hb_strncpyUpperTrim( szName, hb_parc( 1 ), hb_parclen( 1 ) ); + uiMax = ( ( AREAP ) s_pCurrArea->pArea)->uiMaxFieldNameLength; + uiLen = hb_parclen( 1 ); + if( uiLen > uiMax ) + { + uiLen = uiMax; + } + szName = ( char * ) hb_xgrab( uiLen + 1 ); + hb_strncpyUpperTrim( szName, hb_parc( 1 ), uiLen ); hb_retni( hb_rddFieldIndex( ( AREAP ) s_pCurrArea->pArea, szName ) ); hb_xfree( szName ); } @@ -3867,4 +3875,4 @@ HB_FUNC( __DBCOPY ) hb_parl( 7 ), /* Rest */ /* Defaults to zero on bad type */ ISCHAR( 8 ) ? hb_parc( 8 ) : NULL ); /* RDD */ } -} \ No newline at end of file +}