mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
fix off-by-one assumption regarding vector indexing dating to 2011
This commit is contained in:
parent
3179df9ab2
commit
e64805430b
4 changed files with 29 additions and 31 deletions
|
@ -86,12 +86,12 @@ VectorVal* Substring::VecToPolicy(Vec* vec)
|
||||||
align_val->Assign(0, make_intrusive<StringVal>(new String(*align.string)));
|
align_val->Assign(0, make_intrusive<StringVal>(new String(*align.string)));
|
||||||
align_val->Assign(1, val_mgr->Count(align.index));
|
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(1, std::move(aligns));
|
||||||
st_val->Assign(2, val_mgr->Bool(bst->IsNewAlignment()));
|
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();
|
Vec* result = new Vec();
|
||||||
|
|
||||||
// VectorVals start at index 1!
|
for ( unsigned int i = 0; i < vec->Size(); ++i )
|
||||||
for ( unsigned int i = 1; i <= vec->Size(); ++i )
|
|
||||||
{
|
{
|
||||||
const auto& v = vec->At(i); // get the RecordVal
|
const auto& v = vec->At(i); // get the RecordVal
|
||||||
if ( ! v )
|
if ( ! v )
|
||||||
|
|
|
@ -352,7 +352,7 @@ VectorVal* String:: VecToPolicy(Vec* vec)
|
||||||
String* string = (*vec)[i];
|
String* string = (*vec)[i];
|
||||||
auto val = make_intrusive<StringVal>(string->Len(),
|
auto val = make_intrusive<StringVal>(string->Len(),
|
||||||
(const char*) string->Bytes());
|
(const char*) string->Bytes());
|
||||||
result->Assign(i+1, std::move(val));
|
result->Assign(i, std::move(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
return result.release();
|
return result.release();
|
||||||
|
@ -362,8 +362,7 @@ String::Vec* String::VecFromPolicy(VectorVal* vec)
|
||||||
{
|
{
|
||||||
Vec* result = new Vec();
|
Vec* result = new Vec();
|
||||||
|
|
||||||
// VectorVals start at index 1!
|
for ( unsigned int i = 0; i < vec->Size(); ++i )
|
||||||
for ( unsigned int i = 1; i <= vec->Size(); ++i )
|
|
||||||
{
|
{
|
||||||
const auto& v = vec->At(i); // get the RecordVal
|
const auto& v = vec->At(i); // get the RecordVal
|
||||||
if ( ! v )
|
if ( ! v )
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
abcdefgh - ijklmnop:
|
abcdefgh - ijklmnop:
|
||||||
AAAabcefghij - lmnopAAAqrst:
|
AAAabcefghij - lmnopAAAqrst:
|
||||||
tok 1: AAA (0/5, T)
|
tok 0: AAA (0/5, T)
|
||||||
abcAAAefghij - lmnopAAAqrst:
|
abcAAAefghij - lmnopAAAqrst:
|
||||||
tok 1: AAA (3/5, T)
|
tok 0: AAA (3/5, T)
|
||||||
abcefghijAAA - lmnopAAAqrst:
|
abcefghijAAA - lmnopAAAqrst:
|
||||||
tok 1: AAA (9/5, T)
|
tok 0: AAA (9/5, T)
|
||||||
xxxAAAyyy - AAAaAAAbAAA:
|
xxxAAAyyy - AAAaAAAbAAA:
|
||||||
tok 1: AAA (3/0, T)
|
tok 0: AAA (3/0, T)
|
||||||
tok 2: AAA (3/4, T)
|
tok 1: AAA (3/4, T)
|
||||||
tok 3: AAA (3/8, T)
|
tok 2: AAA (3/8, T)
|
||||||
AAAaAAAbAAA - xxxAAAyyy:
|
AAAaAAAbAAA - xxxAAAyyy:
|
||||||
tok 1: AAA (0/3, T)
|
tok 0: AAA (0/3, T)
|
||||||
tok 2: AAA (4/3, T)
|
tok 1: AAA (4/3, T)
|
||||||
tok 3: AAA (8/3, T)
|
tok 2: AAA (8/3, T)
|
||||||
xxCDyABzCDyABzz - ABCD:
|
xxCDyABzCDyABzz - ABCD:
|
||||||
tok 1: CD (2/2, T)
|
tok 0: CD (2/2, T)
|
||||||
tok 2: AB (5/0, T)
|
tok 1: AB (5/0, T)
|
||||||
tok 3: CD (8/2, F)
|
tok 2: CD (8/2, F)
|
||||||
tok 4: AB (11/0, T)
|
tok 3: AB (11/0, T)
|
||||||
ABCD - xxCDyABzCDyABzz:
|
ABCD - xxCDyABzCDyABzz:
|
||||||
tok 1: CD (2/2, T)
|
tok 0: CD (2/2, T)
|
||||||
tok 2: AB (0/5, T)
|
tok 1: AB (0/5, T)
|
||||||
tok 3: CD (2/8, F)
|
tok 2: CD (2/8, F)
|
||||||
tok 4: AB (0/11, T)
|
tok 3: AB (0/11, T)
|
||||||
Cache-control: no-cache^M^JAccept: - Accept-: deflate^M^JAccept-: Accept-:
|
Cache-control: no-cache^M^JAccept: - Accept-: deflate^M^JAccept-: Accept-:
|
||||||
tok 1: Accept (27/0, T)
|
tok 0: Accept (27/0, T)
|
||||||
tok 2: e^M^JAccept (22/15, T)
|
tok 1: e^M^JAccept (22/15, T)
|
||||||
tok 3: Accept (27/29, T)
|
tok 2: Accept (27/29, T)
|
||||||
xxAAxxAAxx - yyyyyAAyyyyy:
|
xxAAxxAAxx - yyyyyAAyyyyy:
|
||||||
tok 1: AA (2/5, T)
|
tok 0: AA (2/5, T)
|
||||||
tok 2: AA (6/5, T)
|
tok 1: AA (6/5, T)
|
||||||
|
|
|
@ -83,6 +83,6 @@ for ( i in s1 )
|
||||||
|
|
||||||
for ( j in ss )
|
for ( j in ss )
|
||||||
print fmt("tok %d: %s (%d/%d, %s)",
|
print fmt("tok %d: %s (%d/%d, %s)",
|
||||||
j, ss[j]$str, ss[j]$aligns[1]$index,
|
j, ss[j]$str, ss[j]$aligns[0]$index,
|
||||||
ss[j]$aligns[2]$index, ss[j]$new);
|
ss[j]$aligns[1]$index, ss[j]$new);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue