Use unowned ptr to Node from outside XFA node tree.
Change-Id: Idcd992224fc5411c97f3001293af83a6c581e695
Reviewed-on: https://pdfium-review.googlesource.com/36991
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fxjs/cfxjse_engine.cpp b/fxjs/cfxjse_engine.cpp
index 78b152b..9b54555 100644
--- a/fxjs/cfxjse_engine.cpp
+++ b/fxjs/cfxjse_engine.cpp
@@ -624,7 +624,7 @@
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 @@
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 7eddddf..e4fb866 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 e13387e..b53e1f4 100644
--- a/xfa/fxfa/parser/cxfa_nodehelper.h
+++ b/xfa/fxfa/parser/cxfa_nodehelper.h
@@ -61,12 +61,12 @@
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<CXFA_Node> m_pCreateParent;
+ UnownedPtr<CXFA_Node> 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 4bb0f5a..197a97d 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<CXFA_Node> m_pThisNode;
+ UnownedPtr<CXFA_Node> m_pScriptNode;
};
#endif // XFA_FXFA_PARSER_CXFA_THISPROXY_H_