mirror of
https://github.com/zeek/zeek.git
synced 2025-10-07 09:08:20 +00:00
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:
commit
0793a38cc5
5 changed files with 32 additions and 11 deletions
4
CHANGES
4
CHANGES
|
@ -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
|
5.0.0-dev.67 | 2022-01-25 12:25:48 +0000
|
||||||
|
|
||||||
* updated Bro->Zeek in comments in the source tree (Vern Paxson, Corelight)
|
* updated Bro->Zeek in comments in the source tree (Vern Paxson, Corelight)
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
5.0.0-dev.67
|
5.0.0-dev.70
|
||||||
|
|
11
src/Val.cc
11
src/Val.cc
|
@ -3326,20 +3326,11 @@ bool VectorVal::Insert(unsigned int index, ValPtr element)
|
||||||
auto n = vector_val->size();
|
auto n = vector_val->size();
|
||||||
|
|
||||||
if ( index < n )
|
if ( index < n )
|
||||||
{ // May need to delete previous element
|
{ // Find location within existing vector elements.
|
||||||
it = std::next(vector_val->begin(), index);
|
it = std::next(vector_val->begin(), index);
|
||||||
if ( yield_types )
|
if ( yield_types )
|
||||||
{
|
|
||||||
if ( *it )
|
|
||||||
ZVal::DeleteIfManaged(**it, element->GetType());
|
|
||||||
types_it = std::next(yield_types->begin(), index);
|
types_it = std::next(yield_types->begin(), index);
|
||||||
}
|
}
|
||||||
else if ( managed_yield )
|
|
||||||
{
|
|
||||||
if ( *it )
|
|
||||||
ZVal::DeleteManagedType(**it);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
it = vector_val->end();
|
it = vector_val->end();
|
||||||
|
|
2
testing/btest/Baseline/language.vector-slice-assign/out
Normal file
2
testing/btest/Baseline/language.vector-slice-assign/out
Normal 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]]
|
24
testing/btest/language/vector-slice-assign.zeek
Normal file
24
testing/btest/language/vector-slice-assign.zeek
Normal 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;
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue