Merge remote-tracking branch 'origin/topic/vern/vec-slice-bug'

* origin/topic/vern/vec-slice-bug:
  btest to catch vector slice assignment issues
  bug fix for vector slice assignment
This commit is contained in:
Tim Wojtulewicz 2022-01-25 13:52:00 -07:00
commit 0793a38cc5
5 changed files with 32 additions and 11 deletions

View file

@ -1,3 +1,7 @@
5.0.0-dev.70 | 2022-01-25 13:52:00 -0700
* bug fix for vector slice assignment (Vern Paxson, Corelight)
5.0.0-dev.67 | 2022-01-25 12:25:48 +0000
* updated Bro->Zeek in comments in the source tree (Vern Paxson, Corelight)

View file

@ -1 +1 @@
5.0.0-dev.67
5.0.0-dev.70

View file

@ -3326,19 +3326,10 @@ bool VectorVal::Insert(unsigned int index, ValPtr element)
auto n = vector_val->size();
if ( index < n )
{ // May need to delete previous element
{ // Find location within existing vector elements.
it = std::next(vector_val->begin(), index);
if ( yield_types )
{
if ( *it )
ZVal::DeleteIfManaged(**it, element->GetType());
types_it = std::next(yield_types->begin(), index);
}
else if ( managed_yield )
{
if ( *it )
ZVal::DeleteManagedType(**it);
}
}
else
{

View file

@ -0,0 +1,2 @@
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
[[seq=4], [seq=5], [seq=3], [seq=1], [seq=2], [seq=6], [seq=7]]

View file

@ -0,0 +1,24 @@
# @TEST-EXEC: zeek -b %INPUT >out
# @TEST-EXEC: btest-diff out
type testrec: record {
seq: count;
};
function make_recs(seqs: vector of count): vector of testrec
{
local r: vector of testrec;
for (i in seqs)
r += testrec($seq=seqs[i]);
return r;
}
event zeek_init()
{
local seqs: vector of count = {1, 2, 3, 4, 5, 6, 7};
local v = make_recs(seqs);
local tmp = v[0:2];
v[0:2] = v[3:5];
v[3:5] = tmp;
print v;
}