diff --git a/lib/remote/filterutility.cpp b/lib/remote/filterutility.cpp index 8bcebfafb..8a7605ad8 100644 --- a/lib/remote/filterutility.cpp +++ b/lib/remote/filterutility.cpp @@ -106,6 +106,8 @@ bool FilterUtility::EvaluateFilter(ScriptFrame& frame, Expression *filter, ASSERT(frame.Self.IsObjectType()); frameNS = frame.Self; + + ASSERT(frameNS != ScriptGlobal::GetGlobals()); } frameNS->Set("obj", target); @@ -256,9 +258,9 @@ std::vector FilterUtility::GetFilterTargets(const QueryDescription& qd, c if (qd.Types.find(type) == qd.Types.end()) BOOST_THROW_EXCEPTION(std::invalid_argument("Invalid type specified for this query.")); - ScriptFrame frame(true); - frame.Sandboxed = true; Namespace::Ptr frameNS = new Namespace(); + ScriptFrame frame(true, frameNS); + frame.Sandboxed = true; if (query->Contains("filter")) { String filter = HttpUtility::GetLastParameter(query, "filter"); @@ -272,8 +274,6 @@ std::vector FilterUtility::GetFilterTargets(const QueryDescription& qd, c } } - frame.Self = frameNS; - provider->FindTargets(type, std::bind(&FilteredAddTarget, std::ref(permissionFrame), permissionFilter, std::ref(frame), &*ufilter, std::ref(result), variableName, _1));