diff options
author | Don Bright <hugh.m.bright@gmail.com> | 2012-01-02 03:30:39 (GMT) |
---|---|---|
committer | Don Bright <hugh.m.bright@gmail.com> | 2012-01-02 03:30:39 (GMT) |
commit | c765f5162f159a233c776e7288f68d440f81b326 (patch) | |
tree | 05617cd569c01427fa8ede0ee0aaad7947a36bf5 /src/parser.y | |
parent | 7a044adfb8f7d9a1e64b72fb9a4a873b0449e4f6 (diff) |
fix crash bug rpt by nop head - 'use <x.scad>' when x.scad doesnt exist
Diffstat (limited to 'src/parser.y')
-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; |