| Index: xfa/fxfa/parser/cxfa_scriptcontext.cpp
|
| diff --git a/xfa/fxfa/parser/cxfa_scriptcontext.cpp b/xfa/fxfa/parser/cxfa_scriptcontext.cpp
|
| index 60ee722c91eb6b8d92798aeb1d38dd557f24de93..b33d4efda4b1a733e1b092d719c5450e6aa6334f 100644
|
| --- a/xfa/fxfa/parser/cxfa_scriptcontext.cpp
|
| +++ b/xfa/fxfa/parser/cxfa_scriptcontext.cpp
|
| @@ -125,17 +125,12 @@ CXFA_ScriptContext::CXFA_ScriptContext(CXFA_Document* pDocument)
|
| m_eRunAtType(XFA_ATTRIBUTEENUM_Client) {}
|
|
|
| CXFA_ScriptContext::~CXFA_ScriptContext() {
|
| - FX_POSITION ps = m_mapVariableToContext.GetStartPosition();
|
| - while (ps) {
|
| - CXFA_Object* pScriptNode;
|
| - CFXJSE_Context* pVariableContext = nullptr;
|
| - m_mapVariableToContext.GetNextAssoc(ps, pScriptNode, pVariableContext);
|
| -
|
| + for (const auto& pair : m_mapVariableToContext) {
|
| + CFXJSE_Context* pVariableContext = pair.second;
|
| delete ToThisProxy(pVariableContext->GetGlobalObject().get(), nullptr);
|
| delete pVariableContext;
|
| }
|
| - m_mapVariableToContext.RemoveAll();
|
| -
|
| + m_mapVariableToContext.clear();
|
| m_upObjectArray.RemoveAll();
|
| }
|
|
|
| @@ -461,7 +456,7 @@ CFXJSE_Context* CXFA_ScriptContext::CreateVariablesContext(
|
| new CXFA_ThisProxy(pSubform, pScriptNode));
|
| RemoveBuiltInObjs(pVariablesContext);
|
| pVariablesContext->EnableCompatibleMode();
|
| - m_mapVariableToContext.SetAt(pScriptNode, pVariablesContext);
|
| + m_mapVariableToContext[pScriptNode] = pVariablesContext;
|
| return pVariablesContext;
|
| }
|
| CXFA_Object* CXFA_ScriptContext::GetVariablesThis(CXFA_Object* pObject,
|
| @@ -484,7 +479,8 @@ bool CXFA_ScriptContext::RunVariablesScript(CXFA_Node* pScriptNode) {
|
| if (!pParent || pParent->GetElementType() != XFA_Element::Variables)
|
| return false;
|
|
|
| - if (m_mapVariableToContext.GetValueAt(pScriptNode))
|
| + auto it = m_mapVariableToContext.find(pScriptNode);
|
| + if (it != m_mapVariableToContext.end() && it->second)
|
| return true;
|
|
|
| CXFA_Node* pTextNode = pScriptNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| @@ -521,10 +517,11 @@ bool CXFA_ScriptContext::QueryVariableValue(CXFA_Node* pScriptNode,
|
| variablesNode->GetElementType() != XFA_Element::Variables)
|
| return false;
|
|
|
| - void* lpVariables = m_mapVariableToContext.GetValueAt(pScriptNode);
|
| - if (!lpVariables)
|
| + auto it = m_mapVariableToContext.find(pScriptNode);
|
| + if (it == m_mapVariableToContext.end() || !it->second)
|
| return false;
|
|
|
| + void* lpVariables = it->second;
|
| bool bRes = false;
|
| CFXJSE_Context* pVariableContext = static_cast<CFXJSE_Context*>(lpVariables);
|
| std::unique_ptr<CFXJSE_Value> pObject = pVariableContext->GetGlobalObject();
|
|
|