diff --git a/ChangeLog.txt b/ChangeLog.txt index 8c3400efe5..5d99c0e102 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -10,6 +10,11 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2015-02-17 17:22 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) + * src/rdd/dbf1.c + * modified code which tries to detect if field flags were used in DBF + header for autoinc numeric fields + 2015-02-17 16:35 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * src/rdd/dbf1.c + added support for autoincrement fields with counter longer then 4 bytes diff --git a/src/rdd/dbf1.c b/src/rdd/dbf1.c index 0f666ffe27..718b8e3933 100644 --- a/src/rdd/dbf1.c +++ b/src/rdd/dbf1.c @@ -4228,6 +4228,16 @@ static HB_ERRCODE hb_dbfOpen( DBFAREAP pArea, LPDBOPENINFO pOpenInfo ) case 'N': if( pField->bFieldFlags & ~( HB_FF_NULLABLE | HB_FF_AUTOINC ) ) uiFlags = 0; + else if( ( pField->bFieldFlags & HB_FF_AUTOINC ) != 0 ) + { + if( HB_GET_LE_UINT32( pField->bReserved1 ) != 0 || + ( pField->bLen - ( pField->bDec ? pField->bDec + 1 : 0 ) > 9 ? + HB_GET_LE_UINT32( pField->bCounter ) != 0 : + ( ( uiCount > 0 && HB_GET_LE_UINT32( pField->bReserved2 ) != 0 ) || + HB_GET_LE_UINT32( &pField->bReserved2[ 4 ] ) != 0 ) ) ) + uiFlags = 0; + break; + } case 'C': case 'M': case 'V':