summaryrefslogtreecommitdiff
path: root/src/modcontext.cc
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2013-05-13 20:27:17 (GMT)
committerMarius Kintel <marius@kintel.net>2013-05-13 20:27:17 (GMT)
commitee6f149dd0d9bcef0cb94cef154ed32f308c23e1 (patch)
tree28542d1aa602d31ffbced210bd881249242f5c5f /src/modcontext.cc
parent8c532d525203d6cd0fc8ab200a4dea1dccd03dd6 (diff)
bugfix: Fixed recursion crash (#346)
Diffstat (limited to 'src/modcontext.cc')
-rw-r--r--src/modcontext.cc26
1 files changed, 0 insertions, 26 deletions
diff --git a/src/modcontext.cc b/src/modcontext.cc
index 44c2002..3879811 100644
--- a/src/modcontext.cc
+++ b/src/modcontext.cc
@@ -27,20 +27,6 @@ void ModuleContext::initializeModule(const class Module &module)
}
}
-class RecursionGuard
-{
-public:
- RecursionGuard(const ModuleContext &c, const std::string &name) : c(c), name(name) {
- c.recursioncount[name]++;
- }
- ~RecursionGuard() { if (--c.recursioncount[name] == 0) c.recursioncount.erase(name); }
- bool recursion_detected() const { return (c.recursioncount[name] > 100); }
-private:
- const ModuleContext &c;
- const std::string &name;
-};
-
-
/*!
Only used to initialize builtins for the top-level root context
*/
@@ -81,12 +67,6 @@ const AbstractModule *ModuleContext::findLocalModule(const std::string &name) co
Value ModuleContext::evaluate_function(const std::string &name, const EvalContext *evalctx) const
{
- RecursionGuard g(*this, name);
- if (g.recursion_detected()) {
- PRINTB("Recursion detected calling function '%s'", name);
- return Value();
- }
-
const AbstractFunction *foundf = findLocalFunction(name);
if (foundf) return foundf->evaluate(this, evalctx);
@@ -141,12 +121,6 @@ FileContext::FileContext(const class FileModule &module, const Context *parent)
Value FileContext::evaluate_function(const std::string &name, const EvalContext *evalctx) const
{
- RecursionGuard g(*this, name);
- if (g.recursion_detected()) {
- PRINTB("Recursion detected calling function '%s'", name);
- return Value();
- }
-
const AbstractFunction *foundf = findLocalFunction(name);
if (foundf) return foundf->evaluate(this, evalctx);
contact: Jan Huwald // Impressum