diff --git a/src/cbmc/cbmc_parse_options.cpp b/src/cbmc/cbmc_parse_options.cpp index d1dd4947e17..1dba025b40d 100644 --- a/src/cbmc/cbmc_parse_options.cpp +++ b/src/cbmc/cbmc_parse_options.cpp @@ -602,6 +602,7 @@ int cbmc_parse_optionst::get_goto_program( } languaget *language=get_language_from_filename(filename); + language->get_language_options(cmdline); if(language==NULL) { @@ -751,6 +752,7 @@ void cbmc_parse_optionst::preprocessing() } languaget *ptr=get_language_from_filename(filename); + ptr->get_language_options(cmdline); if(ptr==NULL) { diff --git a/src/clobber/clobber_parse_options.cpp b/src/clobber/clobber_parse_options.cpp index 6537445e88b..7915a567caa 100644 --- a/src/clobber/clobber_parse_options.cpp +++ b/src/clobber/clobber_parse_options.cpp @@ -248,6 +248,7 @@ bool clobber_parse_optionst::get_goto_program( } languaget *language=get_language_from_filename(filename); + language->get_language_options(cmdline); if(language==NULL) { diff --git a/src/java_bytecode/java_bytecode_language.cpp b/src/java_bytecode/java_bytecode_language.cpp index 7877138514a..5ddb17c0df8 100644 --- a/src/java_bytecode/java_bytecode_language.cpp +++ b/src/java_bytecode/java_bytecode_language.cpp @@ -14,6 +14,7 @@ Author: Daniel Kroening, kroening@kroening.com #include #include #include +#include #include #include @@ -79,6 +80,8 @@ void java_bytecode_languaget::get_language_options(const cmdlinet &cmd) } else java_cp_include_files=".*"; + + language_options_initialized=true; } std::set java_bytecode_languaget::extensions() const @@ -105,6 +108,7 @@ bool java_bytecode_languaget::parse( std::istream &instream, const std::string &path) { + PRECONDITION(language_options_initialized); java_class_loader.set_message_handler(get_message_handler()); java_class_loader.set_java_cp_include_files(java_cp_include_files); diff --git a/src/java_bytecode/java_class_loader_limit.cpp b/src/java_bytecode/java_class_loader_limit.cpp index 7ba1d4fe0ee..5e66cea6935 100644 --- a/src/java_bytecode/java_class_loader_limit.cpp +++ b/src/java_bytecode/java_class_loader_limit.cpp @@ -19,7 +19,7 @@ void java_class_loader_limitt::setup_class_load_limit( std::string &java_cp_include_files) { if(java_cp_include_files.empty()) - throw "class regexp cannot be empty"; + throw "class regexp cannot be empty, `get_language_options` not called?"; // '@' signals file reading with list of class files to load regex_match=java_cp_include_files[0]!='@'; diff --git a/src/util/language.h b/src/util/language.h index fac0e13aed7..b1e51dbbfec 100644 --- a/src/util/language.h +++ b/src/util/language.h @@ -137,6 +137,7 @@ class languaget:public messaget static irep_idt get_stub_return_symbol_name(const irep_idt &function_id); bool generate_opaque_stubs; + bool language_options_initialized=false; private: bool is_symbol_opaque_function(const symbolt &symbol);