From 94f7b75b4d5d1988e599ed4a9a7b6cf451994f1d Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Tue, 3 Jul 2018 21:19:36 +0000 Subject: Use unowned ptr to Node from outside XFA node tree. Change-Id: Idcd992224fc5411c97f3001293af83a6c581e695 Reviewed-on: https://pdfium-review.googlesource.com/36991 Reviewed-by: dsinclair Commit-Queue: Tom Sepez --- fxjs/cfxjse_engine.cpp | 4 ++-- xfa/fxfa/parser/cxfa_nodehelper.cpp | 10 ++-------- xfa/fxfa/parser/cxfa_nodehelper.h | 12 ++++++------ xfa/fxfa/parser/cxfa_thisproxy.h | 12 ++++++------ 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/fxjs/cfxjse_engine.cpp b/fxjs/cfxjse_engine.cpp index 78b152b9dd..9b54555a21 100644 --- a/fxjs/cfxjse_engine.cpp +++ b/fxjs/cfxjse_engine.cpp @@ -624,7 +624,7 @@ bool CFXJSE_Engine::ResolveObjects(CXFA_Object* refObject, dwStyles |= XFA_RESOLVENODE_Bind; findObjects.clear(); findObjects.push_back( - m_ResolveProcessor->GetNodeHelper()->m_pAllStartParent); + m_ResolveProcessor->GetNodeHelper()->m_pAllStartParent.Get()); continue; } break; @@ -724,7 +724,7 @@ bool CFXJSE_Engine::ResolveObjects(CXFA_Object* refObject, XFA_RESOLVENODE_BindNew)) { CXFA_NodeHelper* helper = m_ResolveProcessor->GetNodeHelper(); if (helper->m_pCreateParent) - resolveNodeRS->objects.push_back(helper->m_pCreateParent); + resolveNodeRS->objects.push_back(helper->m_pCreateParent.Get()); else helper->CreateNode_ForCondition(rndFind.m_wsCondition); diff --git a/xfa/fxfa/parser/cxfa_nodehelper.cpp b/xfa/fxfa/parser/cxfa_nodehelper.cpp index 7eddddf37b..e4fb8660f9 100644 --- a/xfa/fxfa/parser/cxfa_nodehelper.cpp +++ b/xfa/fxfa/parser/cxfa_nodehelper.cpp @@ -17,15 +17,9 @@ #include "xfa/fxfa/parser/xfa_resolvenode_rs.h" #include "xfa/fxfa/parser/xfa_utils.h" -CXFA_NodeHelper::CXFA_NodeHelper() - : m_eLastCreateType(XFA_Element::DataValue), - m_pCreateParent(nullptr), - m_iCreateCount(0), - m_iCreateFlag(XFA_ResolveNode_RSType_CreateNodeOne), - m_iCurAllStart(-1), - m_pAllStartParent(nullptr) {} +CXFA_NodeHelper::CXFA_NodeHelper() = default; -CXFA_NodeHelper::~CXFA_NodeHelper() {} +CXFA_NodeHelper::~CXFA_NodeHelper() = default; CXFA_Node* CXFA_NodeHelper::ResolveNodes_GetOneChild(CXFA_Node* parent, const wchar_t* pwsName, diff --git a/xfa/fxfa/parser/cxfa_nodehelper.h b/xfa/fxfa/parser/cxfa_nodehelper.h index e13387ec9e..b53e1f4063 100644 --- a/xfa/fxfa/parser/cxfa_nodehelper.h +++ b/xfa/fxfa/parser/cxfa_nodehelper.h @@ -61,12 +61,12 @@ class CXFA_NodeHelper { void SetCreateNodeType(CXFA_Node* refNode); bool NodeIsProperty(CXFA_Node* refNode); - XFA_Element m_eLastCreateType; - CXFA_Node* m_pCreateParent; - int32_t m_iCreateCount; - XFA_ResolveNode_RSType m_iCreateFlag; - int32_t m_iCurAllStart; - CXFA_Node* m_pAllStartParent; + XFA_Element m_eLastCreateType = XFA_Element::DataValue; + XFA_ResolveNode_RSType m_iCreateFlag = XFA_ResolveNode_RSType_CreateNodeOne; + int32_t m_iCreateCount = 0; + int32_t m_iCurAllStart = -1; + UnownedPtr m_pCreateParent; + UnownedPtr m_pAllStartParent; }; #endif // XFA_FXFA_PARSER_CXFA_NODEHELPER_H_ diff --git a/xfa/fxfa/parser/cxfa_thisproxy.h b/xfa/fxfa/parser/cxfa_thisproxy.h index 4bb0f5a1b5..197a97da67 100644 --- a/xfa/fxfa/parser/cxfa_thisproxy.h +++ b/xfa/fxfa/parser/cxfa_thisproxy.h @@ -7,21 +7,21 @@ #ifndef XFA_FXFA_PARSER_CXFA_THISPROXY_H_ #define XFA_FXFA_PARSER_CXFA_THISPROXY_H_ +#include "core/fxcrt/unowned_ptr.h" +#include "xfa/fxfa/parser/cxfa_node.h" #include "xfa/fxfa/parser/cxfa_object.h" -class CXFA_Node; - class CXFA_ThisProxy : public CXFA_Object { public: CXFA_ThisProxy(CXFA_Node* pThisNode, CXFA_Node* pScriptNode); ~CXFA_ThisProxy() override; - CXFA_Node* GetThisNode() const { return m_pThisNode; } - CXFA_Node* GetScriptNode() const { return m_pScriptNode; } + CXFA_Node* GetThisNode() const { return m_pThisNode.Get(); } + CXFA_Node* GetScriptNode() const { return m_pScriptNode.Get(); } private: - CXFA_Node* m_pThisNode; - CXFA_Node* m_pScriptNode; + UnownedPtr m_pThisNode; + UnownedPtr m_pScriptNode; }; #endif // XFA_FXFA_PARSER_CXFA_THISPROXY_H_ -- cgit v1.2.3