| Index: xfa/src/fxfa/src/parser/xfa_parser_imp.cpp
|
| diff --git a/xfa/src/fxfa/src/parser/xfa_parser_imp.cpp b/xfa/src/fxfa/src/parser/xfa_parser_imp.cpp
|
| index 9e85c1f539c852461e24443a882adb910f5d899b..48547d7e9f3ec09e6b4a391402fa6a42d34cd6a7 100644
|
| --- a/xfa/src/fxfa/src/parser/xfa_parser_imp.cpp
|
| +++ b/xfa/src/fxfa/src/parser/xfa_parser_imp.cpp
|
| @@ -386,12 +386,12 @@ CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP(
|
| pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName,
|
| XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI,
|
| XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| CXFA_Node* pXFARootNode =
|
| m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Xfa);
|
| if (!pXFARootNode) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| m_pRootNode = pXFARootNode;
|
| pXFARootNode->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"xfa"));
|
| @@ -408,8 +408,8 @@ CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP(
|
| }
|
| }
|
| }
|
| - IFDE_XMLNode* pXMLConfigDOMRoot = NULL;
|
| - CXFA_Node* pXFAConfigDOMRoot = NULL;
|
| + IFDE_XMLNode* pXMLConfigDOMRoot = nullptr;
|
| + CXFA_Node* pXFAConfigDOMRoot = nullptr;
|
| {
|
| for (IFDE_XMLNode* pChildItem =
|
| pXMLDocumentNode->GetNodeItem(IFDE_XMLNode::FirstChild);
|
| @@ -423,7 +423,7 @@ CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP(
|
| }
|
| if (CXFA_Node* pChildNode =
|
| pXFARootNode->GetFirstChildByName(pPacketInfo->uHash)) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| pXMLConfigDOMRoot = pChildItem;
|
| pXFAConfigDOMRoot =
|
| @@ -431,8 +431,9 @@ CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP(
|
| pXFARootNode->InsertChild(pXFAConfigDOMRoot, NULL);
|
| }
|
| }
|
| - IFDE_XMLNode* pXMLDatasetsDOMRoot = NULL;
|
| - IFDE_XMLNode* pXMLFormDOMRoot = NULL;
|
| + IFDE_XMLNode* pXMLDatasetsDOMRoot = nullptr;
|
| + IFDE_XMLNode* pXMLFormDOMRoot = nullptr;
|
| + IFDE_XMLNode* pXMLTemplateDOMRoot = nullptr;
|
| {
|
| for (IFDE_XMLNode* pChildItem =
|
| pXMLDocumentNode->GetNodeItem(IFDE_XMLNode::FirstChild);
|
| @@ -453,7 +454,7 @@ CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP(
|
| if (!XFA_FDEExtension_MatchNodeName(pElement, pPacketInfo->pName,
|
| pPacketInfo->pURI,
|
| pPacketInfo->eFlags)) {
|
| - pPacketInfo = NULL;
|
| + pPacketInfo = nullptr;
|
| }
|
| }
|
| XFA_XDPPACKET ePacket =
|
| @@ -463,29 +464,41 @@ CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP(
|
| }
|
| if (ePacket == XFA_XDPPACKET_Datasets) {
|
| if (pXMLDatasetsDOMRoot) {
|
| - pXMLDatasetsDOMRoot = NULL;
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| pXMLDatasetsDOMRoot = pElement;
|
| } else if (ePacket == XFA_XDPPACKET_Form) {
|
| if (pXMLFormDOMRoot) {
|
| - pXMLFormDOMRoot = NULL;
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| pXMLFormDOMRoot = pElement;
|
| + } else if (ePacket == XFA_XDPPACKET_Template) {
|
| + if (pXMLTemplateDOMRoot) {
|
| + // Found a duplicate template packet.
|
| + return nullptr;
|
| + }
|
| + CXFA_Node* pPacketNode = ParseAsXDPPacket(pElement, ePacket);
|
| + if (pPacketNode) {
|
| + pXMLTemplateDOMRoot = pElement;
|
| + pXFARootNode->InsertChild(pPacketNode);
|
| + }
|
| } else {
|
| CXFA_Node* pPacketNode = ParseAsXDPPacket(pElement, ePacket);
|
| if (pPacketNode) {
|
| if (pPacketInfo &&
|
| (pPacketInfo->eFlags & XFA_XDPPACKET_FLAGS_SUPPORTONE) &&
|
| pXFARootNode->GetFirstChildByName(pPacketInfo->uHash)) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| pXFARootNode->InsertChild(pPacketNode);
|
| }
|
| }
|
| }
|
| }
|
| + if (!pXMLTemplateDOMRoot) {
|
| + // No template is found.
|
| + return nullptr;
|
| + }
|
| if (pXMLDatasetsDOMRoot) {
|
| CXFA_Node* pPacketNode =
|
| ParseAsXDPPacket(pXMLDatasetsDOMRoot, XFA_XDPPACKET_Datasets);
|
|
|