diff options
author | Marius Kintel <marius@kintel.net> | 2012-01-04 22:29:08 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2012-01-04 22:29:08 (GMT) |
commit | 52dfffd97ba49b603b4814d843cd9be08d040364 (patch) | |
tree | 044c93d19aa38ac24822a241babbece7425bfbb2 /src/parser.y | |
parent | 0be212e75d73644b1cff8291a4b6a6fe0098b942 (diff) | |
parent | ba8aa515d14cf270c9d0fdf50b4c7c55b3c416a8 (diff) |
Merge branch 'master' into threading
Conflicts:
RELEASE_NOTES
Diffstat (limited to 'src/parser.y')
-rw-r--r-- | src/parser.y | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/parser.y b/src/parser.y index b0df50d..3dd933c 100644 --- a/src/parser.y +++ b/src/parser.y @@ -588,12 +588,15 @@ AbstractModule *parse(const char *text, const char *path, int debug) if (!module) return NULL; - 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); - } + // Iterating manually since we want to modify the container while iterating + Module::ModuleContainer::iterator iter = module->usedlibs.begin(); + while (iter != module->usedlibs.end()) { + Module::ModuleContainer::iterator curr = iter++; + curr->second = Module::compile_library(curr->first); + if (!curr->second) { + PRINTF("WARNING: Failed to compile library `%s'.", curr->first.c_str()); + module->usedlibs.erase(curr); + } } parser_error_pos = -1; |