diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/parser.y | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/parser.y b/src/parser.y index b0df50d..958ef89 100644 --- a/src/parser.y +++ b/src/parser.y @@ -588,13 +588,18 @@ AbstractModule *parse(const char *text, const char *path, int debug) if (!module) return NULL; - BOOST_FOREACH(Module::ModuleContainer::value_type &m, module->usedlibs) { + std::vector<std::string> to_erase; + + BOOST_FOREACH(Module::ModuleContainer::value_type &m, module->usedlibs) { module->usedlibs[m.first] = Module::compile_library(m.first); if (!module->usedlibs[m.first]) { PRINTF("WARNING: Failed to compile library `%s'.", m.first.c_str()); - module->usedlibs.erase(m.first); + to_erase.push_back( m.first ); } } + BOOST_FOREACH( std::string s, to_erase ) { + module->usedlibs.erase( s ); + } parser_error_pos = -1; return module; |