summaryrefslogtreecommitdiff
path: root/src/parser.y
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2012-01-04 22:07:32 (GMT)
committerMarius Kintel <marius@kintel.net>2012-01-04 22:07:32 (GMT)
commitfdce8d15fc4a927d1a6a257783dde5054d9f3e7b (patch)
tree6a779b50ef65474af9c539ad7d42268f7e760ae8 /src/parser.y
parentcbabbaed700536b3a1f513fd5a07d25382cb137f (diff)
parentba8aa515d14cf270c9d0fdf50b4c7c55b3c416a8 (diff)
Merge branch 'master' into boost_filesystem
Conflicts: boost.pri src/lexer.l tests/CMakeLists.txt
Diffstat (limited to 'src/parser.y')
-rw-r--r--src/parser.y15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/parser.y b/src/parser.y
index df652f5..1c4a784 100644
--- a/src/parser.y
+++ b/src/parser.y
@@ -586,12 +586,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;
contact: Jan Huwald // Impressum