#include "base/scriptfunction.h"
#include "base/scriptvariable.h"
#include "base/utility.h"
+#include "base/objectlock.h"
#include <boost/foreach.hpp>
#include <boost/exception_ptr.hpp>
#include <boost/exception/errinfo_nested_exception.hpp>
if (m_Operator == &AExpression::OpDict) {
Array::Ptr exprl = m_Operand1;
+ ObjectLock olock(exprl);
BOOST_FOREACH(const AExpression::Ptr& expr, exprl) {
expr->ExtractPath(path, result);
}
if (path.size() == 1) {
VERIFY(exprl->m_Operator == &AExpression::OpDict);
Array::Ptr subexprl = exprl->m_Operand1;
+ ObjectLock olock(subexprl);
BOOST_FOREACH(const AExpression::Ptr& expr, subexprl) {
result->Add(expr);
}
if (m_Operator == &AExpression::OpDict) {
Array::Ptr exprl = m_Operand1;
+ ObjectLock olock(exprl);
BOOST_FOREACH(const AExpression::Ptr& expr, exprl) {
expr->FindDebugInfoPath(path, result);
}
if (operand.IsObjectType<Array>()) {
Array::Ptr arr = operand;
stream << String(indent, ' ') << "Array:\n";
+ ObjectLock olock(arr);
BOOST_FOREACH(const Value& elem, arr) {
DumpOperand(stream, elem, indent + 1);
}
Array::Ptr arr = right;
bool found = false;
+ ObjectLock olock(arr);
BOOST_FOREACH(const Value& value, arr) {
if (value == left) {
found = true;
Array::Ptr arr = expr->EvaluateOperand2(locals);
std::vector<Value> arguments;
+ ObjectLock olock(arr);
BOOST_FOREACH(const AExpression::Ptr& aexpr, arr) {
arguments.push_back(aexpr->Evaluate(locals));
}
Array::Ptr result = make_shared<Array>();
if (arr) {
+ ObjectLock olock(arr);
BOOST_FOREACH(const AExpression::Ptr& aexpr, arr) {
result->Add(aexpr->Evaluate(locals));
}
result->Set("__parent", locals);
if (arr) {
+ ObjectLock olock(arr);
BOOST_FOREACH(const AExpression::Ptr& aexpr, arr) {
aexpr->Evaluate(in_place ? locals : result);
}