mirror of https://github.com/vitalif/openscad
Fixes crash during the second run of a failing recursive module
parent
f1b29e1db9
commit
3612db6a2f
|
@ -42,33 +42,13 @@ std::string LocalScope::dump(const std::string &indent) const
|
|||
return dump.str();
|
||||
}
|
||||
|
||||
// FIXME: Two parameters here is a hack. Rather have separate types of scopes, or check the type of the first parameter. Note const vs. non-const
|
||||
std::vector<AbstractNode*> LocalScope::instantiateChildren(const Context *evalctx, FileContext *filectx) const
|
||||
{
|
||||
Context *c = filectx;
|
||||
|
||||
if (!c) {
|
||||
c = new Context(evalctx);
|
||||
|
||||
// FIXME: If we make c a ModuleContext, child() doesn't work anymore
|
||||
// c->functions_p = &this->functions;
|
||||
// c->modules_p = &this->modules;
|
||||
|
||||
// Uncommenting the following would allow assignments in local scopes,
|
||||
// but would cause duplicate evaluation of module scopes
|
||||
// BOOST_FOREACH (const Assignment &ass, this->assignments) {
|
||||
// c->set_variable(ass.first, ass.second->evaluate(c));
|
||||
// }
|
||||
}
|
||||
|
||||
std::vector<AbstractNode*> childnodes;
|
||||
BOOST_FOREACH (ModuleInstantiation *modinst, this->children) {
|
||||
AbstractNode *node = modinst->evaluate(c);
|
||||
AbstractNode *node = modinst->evaluate(filectx ? filectx : evalctx);
|
||||
if (node) childnodes.push_back(node);
|
||||
}
|
||||
|
||||
if (c != filectx) delete c;
|
||||
|
||||
return childnodes;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue