fix off-by-one assumption regarding vector indexing dating to 2011

This commit is contained in:
Vern Paxson 2021-02-24 16:11:27 -08:00
parent 3179df9ab2
commit e64805430b
4 changed files with 29 additions and 31 deletions

View file

@ -86,12 +86,12 @@ VectorVal* Substring::VecToPolicy(Vec* vec)
align_val->Assign(0, make_intrusive<StringVal>(new String(*align.string)));
align_val->Assign(1, val_mgr->Count(align.index));
aligns->Assign(j + 1, std::move(align_val));
aligns->Assign(j, std::move(align_val));
}
st_val->Assign(1, std::move(aligns));
st_val->Assign(2, val_mgr->Bool(bst->IsNewAlignment()));
result->Assign(i + 1, std::move(st_val));
result->Assign(i, std::move(st_val));
}
}
@ -102,8 +102,7 @@ Substring::Vec* Substring::VecFromPolicy(VectorVal* vec)
{
Vec* result = new Vec();
// VectorVals start at index 1!
for ( unsigned int i = 1; i <= vec->Size(); ++i )
for ( unsigned int i = 0; i < vec->Size(); ++i )
{
const auto& v = vec->At(i); // get the RecordVal
if ( ! v )

View file

@ -352,7 +352,7 @@ VectorVal* String:: VecToPolicy(Vec* vec)
String* string = (*vec)[i];
auto val = make_intrusive<StringVal>(string->Len(),
(const char*) string->Bytes());
result->Assign(i+1, std::move(val));
result->Assign(i, std::move(val));
}
return result.release();
@ -362,8 +362,7 @@ String::Vec* String::VecFromPolicy(VectorVal* vec)
{
Vec* result = new Vec();
// VectorVals start at index 1!
for ( unsigned int i = 1; i <= vec->Size(); ++i )
for ( unsigned int i = 0; i < vec->Size(); ++i )
{
const auto& v = vec->At(i); // get the RecordVal
if ( ! v )

View file

@ -1,33 +1,33 @@
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
abcdefgh - ijklmnop:
AAAabcefghij - lmnopAAAqrst:
tok 1: AAA (0/5, T)
tok 0: AAA (0/5, T)
abcAAAefghij - lmnopAAAqrst:
tok 1: AAA (3/5, T)
tok 0: AAA (3/5, T)
abcefghijAAA - lmnopAAAqrst:
tok 1: AAA (9/5, T)
tok 0: AAA (9/5, T)
xxxAAAyyy - AAAaAAAbAAA:
tok 1: AAA (3/0, T)
tok 2: AAA (3/4, T)
tok 3: AAA (3/8, T)
tok 0: AAA (3/0, T)
tok 1: AAA (3/4, T)
tok 2: AAA (3/8, T)
AAAaAAAbAAA - xxxAAAyyy:
tok 1: AAA (0/3, T)
tok 2: AAA (4/3, T)
tok 3: AAA (8/3, T)
tok 0: AAA (0/3, T)
tok 1: AAA (4/3, T)
tok 2: AAA (8/3, T)
xxCDyABzCDyABzz - ABCD:
tok 1: CD (2/2, T)
tok 2: AB (5/0, T)
tok 3: CD (8/2, F)
tok 4: AB (11/0, T)
tok 0: CD (2/2, T)
tok 1: AB (5/0, T)
tok 2: CD (8/2, F)
tok 3: AB (11/0, T)
ABCD - xxCDyABzCDyABzz:
tok 1: CD (2/2, T)
tok 2: AB (0/5, T)
tok 3: CD (2/8, F)
tok 4: AB (0/11, T)
tok 0: CD (2/2, T)
tok 1: AB (0/5, T)
tok 2: CD (2/8, F)
tok 3: AB (0/11, T)
Cache-control: no-cache^M^JAccept: - Accept-: deflate^M^JAccept-: Accept-:
tok 1: Accept (27/0, T)
tok 2: e^M^JAccept (22/15, T)
tok 3: Accept (27/29, T)
tok 0: Accept (27/0, T)
tok 1: e^M^JAccept (22/15, T)
tok 2: Accept (27/29, T)
xxAAxxAAxx - yyyyyAAyyyyy:
tok 1: AA (2/5, T)
tok 2: AA (6/5, T)
tok 0: AA (2/5, T)
tok 1: AA (6/5, T)

View file

@ -83,6 +83,6 @@ for ( i in s1 )
for ( j in ss )
print fmt("tok %d: %s (%d/%d, %s)",
j, ss[j]$str, ss[j]$aligns[1]$index,
ss[j]$aligns[2]$index, ss[j]$new);
j, ss[j]$str, ss[j]$aligns[0]$index,
ss[j]$aligns[1]$index, ss[j]$new);
}