mirror of
https://github.com/zeek/zeek.git
synced 2025-10-04 15:48:19 +00:00
Bif const: make sure const is indeed a constant.
This commit is contained in:
parent
782f007b5c
commit
f3aa7b2fac
3 changed files with 13 additions and 1 deletions
11
src/Var.cc
11
src/Var.cc
|
@ -343,6 +343,17 @@ Val* internal_val(const char* name)
|
||||||
return id->ID_Val();
|
return id->ID_Val();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Val* internal_const_val(const char* name)
|
||||||
|
{
|
||||||
|
ID* id = lookup_ID(name, GLOBAL_MODULE_NAME);
|
||||||
|
if ( ! id )
|
||||||
|
internal_error("internal variable %s missing", name);
|
||||||
|
if ( ! id->IsConst())
|
||||||
|
internal_error("internal variable %s is not constant", name);
|
||||||
|
|
||||||
|
return id->ID_Val();
|
||||||
|
}
|
||||||
|
|
||||||
Val* opt_internal_val(const char* name)
|
Val* opt_internal_val(const char* name)
|
||||||
{
|
{
|
||||||
ID* id = lookup_ID(name, GLOBAL_MODULE_NAME);
|
ID* id = lookup_ID(name, GLOBAL_MODULE_NAME);
|
||||||
|
|
|
@ -27,6 +27,7 @@ extern void begin_func(ID* id, const char* module_name, function_flavor flavor,
|
||||||
extern void end_func(Stmt* body, attr_list* attrs = 0);
|
extern void end_func(Stmt* body, attr_list* attrs = 0);
|
||||||
|
|
||||||
extern Val* internal_val(const char* name);
|
extern Val* internal_val(const char* name);
|
||||||
|
extern Val* internal_const_val(const char* name); // internal error if not const
|
||||||
extern Val* opt_internal_val(const char* name); // returns nil if not defined
|
extern Val* opt_internal_val(const char* name); // returns nil if not defined
|
||||||
extern double opt_internal_double(const char* name);
|
extern double opt_internal_double(const char* name);
|
||||||
extern bro_int_t opt_internal_int(const char* name);
|
extern bro_int_t opt_internal_int(const char* name);
|
||||||
|
|
|
@ -466,7 +466,7 @@ const_def: TOK_CONST opt_ws TOK_ID opt_ws ':' opt_ws TOK_ID opt_ws ';'
|
||||||
decl.c_namespace_start.c_str(),
|
decl.c_namespace_start.c_str(),
|
||||||
builtin_types[typeidx].c_type, decl.bare_name.c_str(),
|
builtin_types[typeidx].c_type, decl.bare_name.c_str(),
|
||||||
decl.c_namespace_end.c_str());
|
decl.c_namespace_end.c_str());
|
||||||
fprintf(fp_netvar_init, "\t%s = internal_val(\"%s\")%s;\n",
|
fprintf(fp_netvar_init, "\t%s = internal_const_val(\"%s\")%s;\n",
|
||||||
decl.c_fullname.c_str(), decl.bro_fullname.c_str(),
|
decl.c_fullname.c_str(), decl.bro_fullname.c_str(),
|
||||||
accessor);
|
accessor);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue