mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Fix indexing of set/table types with a vector
Previous behavor: internal error: bad index type in CompositeHash::ComputeSingletonHash Aborted (core dumped)
This commit is contained in:
parent
fc3438bda5
commit
735ac0b4fa
3 changed files with 45 additions and 2 deletions
|
@ -22,12 +22,13 @@ CompositeHash::CompositeHash(TypeListPtr composite_type)
|
||||||
{
|
{
|
||||||
singleton_tag = TYPE_INTERNAL_ERROR;
|
singleton_tag = TYPE_INTERNAL_ERROR;
|
||||||
|
|
||||||
// If the only element is a record, don't treat it as a
|
// If the only element is a record or vector, don't treat it as a
|
||||||
// singleton, since it needs to be evaluated specially.
|
// singleton, since it needs to be evaluated specially.
|
||||||
|
|
||||||
if ( type->GetTypes().size() == 1 )
|
if ( type->GetTypes().size() == 1 )
|
||||||
{
|
{
|
||||||
if ( type->GetTypes()[0]->Tag() == TYPE_RECORD )
|
if ( type->GetTypes()[0]->Tag() == TYPE_RECORD ||
|
||||||
|
type->GetTypes()[0]->Tag() == TYPE_VECTOR)
|
||||||
{
|
{
|
||||||
is_complex_type = true;
|
is_complex_type = true;
|
||||||
is_singleton = false;
|
is_singleton = false;
|
||||||
|
|
18
testing/btest/Baseline/language.set-vector-index/out
Normal file
18
testing/btest/Baseline/language.set-vector-index/out
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
{
|
||||||
|
[2, 3],
|
||||||
|
[4, 5, 6],
|
||||||
|
[1]
|
||||||
|
}
|
||||||
|
T
|
||||||
|
T
|
||||||
|
T
|
||||||
|
T
|
||||||
|
{
|
||||||
|
[[1], [2]] ,
|
||||||
|
[[1, 2], [3, 4, 5]]
|
||||||
|
}
|
||||||
|
T
|
||||||
|
T
|
||||||
|
T
|
||||||
|
T
|
24
testing/btest/language/set-vector-index.zeek
Normal file
24
testing/btest/language/set-vector-index.zeek
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# @TEST-EXEC: zeek -b %INPUT >out
|
||||||
|
# @TEST-EXEC: btest-diff out
|
||||||
|
|
||||||
|
local s: set[vector of count] = set();
|
||||||
|
local ss: set[vector of count, vector of count] = set();
|
||||||
|
|
||||||
|
add s[vector(1)];
|
||||||
|
add s[vector(2, 3)];
|
||||||
|
add s[vector(4, 5, 6)];
|
||||||
|
|
||||||
|
add ss[vector(1), vector(2)];
|
||||||
|
add ss[vector(1, 2), vector(3, 4, 5)];
|
||||||
|
|
||||||
|
print s;
|
||||||
|
print vector(1) in s;
|
||||||
|
print vector(2) !in s;
|
||||||
|
print vector(2, 3) in s;
|
||||||
|
print vector(4, 5, 6) in s;
|
||||||
|
|
||||||
|
print ss;
|
||||||
|
print [vector(1), vector(2)] in ss;
|
||||||
|
print [vector(1), vector(1)] !in ss;
|
||||||
|
print [vector(1, 2), vector(3, 4)] !in ss;
|
||||||
|
print [vector(1, 2), vector(3, 4, 5)] in ss;
|
Loading…
Add table
Add a link
Reference in a new issue