@@ -1276,8 +1276,8 @@ class _FbBoolList extends _FbList<bool> {
1276
1276
class _VTable {
1277
1277
static const int _metadataLength = 4 ;
1278
1278
1279
- // Note: fieldOffsets start as "tail offsets"+1 and are then transformed to
1280
- // actual offsets when a table is finished, by calling [computeFieldOffsets] .
1279
+ // Note: fieldOffsets start as "tail offsets" and are then transformed by
1280
+ // [computeFieldOffsets()] to actual offsets when a table is finished.
1281
1281
final Uint32List fieldOffsets;
1282
1282
static const uint32Max = 4294967295 ;
1283
1283
bool offsetsComputed = false ;
@@ -1298,10 +1298,9 @@ class _VTable {
1298
1298
@pragma ('vm:prefer-inline' )
1299
1299
void addField (int field, int offset) {
1300
1300
assert (! offsetsComputed);
1301
- // We need to increase the offset by 1 to later (in [computeFieldOffsets])
1302
- // recognize fields that haven't been set (Uint32List initializes to 0s).
1301
+ assert (offset > 0 ); // it's impossible for field to start at the buffer end
1303
1302
assert (offset < uint32Max);
1304
- fieldOffsets[field] = offset + 1 ;
1303
+ fieldOffsets[field] = offset;
1305
1304
}
1306
1305
1307
1306
@pragma ('vm:prefer-inline' )
@@ -1322,8 +1321,9 @@ class _VTable {
1322
1321
assert (! offsetsComputed);
1323
1322
offsetsComputed = true ;
1324
1323
for (var i = 0 ; i < fieldOffsets.length; i++ ) {
1325
- int fieldTail = fieldOffsets[i];
1326
- fieldOffsets[i] = fieldTail == 0 ? 0 : tableTail - fieldTail + 1 ;
1324
+ if (fieldOffsets[i] != 0 ) {
1325
+ fieldOffsets[i] = tableTail - fieldOffsets[i];
1326
+ }
1327
1327
}
1328
1328
}
1329
1329
@@ -1340,8 +1340,7 @@ class _VTable {
1340
1340
bufOffset += 2 ;
1341
1341
// Field offsets.
1342
1342
for (int i = 0 ; i < fieldOffsets.length; i++ ) {
1343
- final fieldOffset = fieldOffsets[i];
1344
- buf.setUint16 (bufOffset, fieldOffset, Endian .little);
1343
+ buf.setUint16 (bufOffset, fieldOffsets[i], Endian .little);
1345
1344
bufOffset += 2 ;
1346
1345
}
1347
1346
}
0 commit comments