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();
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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 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 double opt_internal_double(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(),
|
||||
builtin_types[typeidx].c_type, decl.bare_name.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(),
|
||||
accessor);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue