diff options
Diffstat (limited to 'xfa/fxfa/parser')
-rw-r--r-- | xfa/fxfa/parser/cxfa_document.cpp | 9 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_document.h | 4 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_resolvenode_rs.h | 18 |
3 files changed, 15 insertions, 16 deletions
diff --git a/xfa/fxfa/parser/cxfa_document.cpp b/xfa/fxfa/parser/cxfa_document.cpp index d42bfb5601..72bba2aeb0 100644 --- a/xfa/fxfa/parser/cxfa_document.cpp +++ b/xfa/fxfa/parser/cxfa_document.cpp @@ -360,7 +360,8 @@ CXFA_Node* FindDataRefDataNode(CXFA_Document* pDocument, } if (rs.dwFlags == XFA_ResolveNode_RSType_CreateNodeOne) { - CXFA_Object* pObject = !rs.objects.empty() ? rs.objects.front() : nullptr; + CXFA_Object* pObject = + !rs.objects.empty() ? rs.objects.front().Get() : nullptr; CXFA_Node* pNode = ToNode(pObject); return (bForceBind || !pNode || !pNode->HasBindItem()) ? pNode : nullptr; } @@ -1200,7 +1201,7 @@ void UpdateBindingRelations(CXFA_Document* pDocument, pDocument->GetScriptContext()->ResolveObjects( pDataScope, wsRef.AsStringView(), &rs, dFlags, pTemplateNode); CXFA_Object* pObject = - !rs.objects.empty() ? rs.objects.front() : nullptr; + !rs.objects.empty() ? rs.objects.front().Get() : nullptr; pDataNode = ToNode(pObject); if (pDataNode) { CreateDataBinding(pFormNode, pDataNode, @@ -1618,8 +1619,8 @@ void CXFA_Document::DataMerge_UpdateBindingRelations( } CXFA_Node* CXFA_Document::GetNotBindNode( - const std::vector<CXFA_Object*>& arrayObjects) const { - for (CXFA_Object* pObject : arrayObjects) { + const std::vector<UnownedPtr<CXFA_Object>>& arrayObjects) const { + for (auto& pObject : arrayObjects) { CXFA_Node* pNode = pObject->AsNode(); if (pNode && !pNode->HasBindItem()) return pNode; diff --git a/xfa/fxfa/parser/cxfa_document.h b/xfa/fxfa/parser/cxfa_document.h index 5260b1873f..590a4cf12a 100644 --- a/xfa/fxfa/parser/cxfa_document.h +++ b/xfa/fxfa/parser/cxfa_document.h @@ -11,6 +11,7 @@ #include <memory> #include <vector> +#include "core/fxcrt/unowned_ptr.h" #include "xfa/fxfa/fxfa.h" #include "xfa/fxfa/parser/cxfa_localemgr.h" #include "xfa/fxfa/parser/cxfa_nodeowner.h" @@ -65,7 +66,8 @@ class CXFA_Document : public CXFA_NodeOwner { CXFA_LocaleMgr* GetLocaleMgr(); CXFA_Object* GetXFAObject(XFA_HashCode wsNodeNameHash); CXFA_Node* GetNodeByID(CXFA_Node* pRoot, const WideStringView& wsID) const; - CXFA_Node* GetNotBindNode(const std::vector<CXFA_Object*>& arrayNodes) const; + CXFA_Node* GetNotBindNode( + const std::vector<UnownedPtr<CXFA_Object>>& arrayNodes) const; CXFA_LayoutProcessor* GetLayoutProcessor(); CFXJSE_Engine* GetScriptContext() const; diff --git a/xfa/fxfa/parser/xfa_resolvenode_rs.h b/xfa/fxfa/parser/xfa_resolvenode_rs.h index 86960abecc..7039c61ee9 100644 --- a/xfa/fxfa/parser/xfa_resolvenode_rs.h +++ b/xfa/fxfa/parser/xfa_resolvenode_rs.h @@ -7,13 +7,10 @@ #ifndef XFA_FXFA_PARSER_XFA_RESOLVENODE_RS_H_ #define XFA_FXFA_PARSER_XFA_RESOLVENODE_RS_H_ -#include <memory> -#include <utility> #include <vector> -#include "fxjs/cfxjse_value.h" -#include "third_party/base/ptr_util.h" -#include "xfa/fxfa/fxfa.h" +#include "core/fxcrt/unowned_ptr.h" +#include "fxjs/xfa/cjx_object.h" #include "xfa/fxfa/parser/cxfa_object.h" #define XFA_RESOLVENODE_Children 0x0001 @@ -40,14 +37,13 @@ struct XFA_RESOLVENODE_RS { XFA_RESOLVENODE_RS(); ~XFA_RESOLVENODE_RS(); - std::vector<CXFA_Object*> objects; // Not owned. - XFA_ResolveNode_RSType dwFlags; - const XFA_SCRIPTATTRIBUTEINFO* pScriptAttribute; + XFA_ResolveNode_RSType dwFlags = XFA_ResolveNode_RSType_Nodes; + std::vector<UnownedPtr<CXFA_Object>> objects; + UnownedPtr<const XFA_SCRIPTATTRIBUTEINFO> pScriptAttribute; }; -inline XFA_RESOLVENODE_RS::XFA_RESOLVENODE_RS() - : dwFlags(XFA_ResolveNode_RSType_Nodes), pScriptAttribute(nullptr) {} +inline XFA_RESOLVENODE_RS::XFA_RESOLVENODE_RS() = default; -inline XFA_RESOLVENODE_RS::~XFA_RESOLVENODE_RS() {} +inline XFA_RESOLVENODE_RS::~XFA_RESOLVENODE_RS() = default; #endif // XFA_FXFA_PARSER_XFA_RESOLVENODE_RS_H_ |