diff --git a/xfa/fxfa/parser/cxfa_simple_parser.cpp b/xfa/fxfa/parser/cxfa_simple_parser.cpp
index 1a773d6..008ca53 100644
--- a/xfa/fxfa/parser/cxfa_simple_parser.cpp
+++ b/xfa/fxfa/parser/cxfa_simple_parser.cpp
@@ -387,7 +387,7 @@
     ParseContentNode(pXFANode, pXMLNode, ePacketID);
     m_pRootNode = pXFANode;
   } else {
-    m_pRootNode = NormalLoader(pXFANode, pXMLNode, ePacketID);
+    m_pRootNode = NormalLoader(pXFANode, pXMLNode, ePacketID, TRUE);
   }
 }
 
@@ -606,7 +606,7 @@
 
   pNode->SetCData(XFA_ATTRIBUTE_Name,
                   XFA_GetPacketByIndex(XFA_PACKET_Config)->pName);
-  if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID))
+  if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, TRUE))
     return nullptr;
 
   pNode->SetXMLMappingNode(pXMLDocumentNode);
@@ -639,7 +639,7 @@
 
         pNode->GetDocument()->RecognizeXFAVersionNumber(wsNamespaceURI);
       }
-      if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID))
+      if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, TRUE))
         return nullptr;
     }
   } else if (ePacketID == XFA_XDPPACKET_Form) {
@@ -775,7 +775,7 @@
 
       pNode->SetCData(XFA_ATTRIBUTE_Name,
                       XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName);
-      if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID))
+      if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, TRUE))
         return nullptr;
     }
   } else if (ePacketID == XFA_XDPPACKET_ConnectionSet) {
@@ -790,7 +790,7 @@
 
       pNode->SetCData(XFA_ATTRIBUTE_Name,
                       XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pName);
-      if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID))
+      if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, TRUE))
         return nullptr;
     }
   } else if (ePacketID == XFA_XDPPACKET_SourceSet) {
@@ -805,7 +805,7 @@
 
       pNode->SetCData(XFA_ATTRIBUTE_Name,
                       XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pName);
-      if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID))
+      if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, TRUE))
         return nullptr;
     }
   }
diff --git a/xfa/fxfa/parser/cxfa_simple_parser.h b/xfa/fxfa/parser/cxfa_simple_parser.h
index 8bef0c3..270dcd2 100644
--- a/xfa/fxfa/parser/cxfa_simple_parser.h
+++ b/xfa/fxfa/parser/cxfa_simple_parser.h
@@ -25,10 +25,10 @@
   ~CXFA_SimpleParser();
 
   int32_t StartParse(IFX_FileRead* pStream, XFA_XDPPACKET ePacketID);
-  int32_t DoParse(IFX_Pause* pPause = nullptr);
+  int32_t DoParse(IFX_Pause* pPause);
   int32_t ParseXMLData(const CFX_WideString& wsXML,
                        CFDE_XMLNode*& pXMLNode,
-                       IFX_Pause* pPause = nullptr);
+                       IFX_Pause* pPause);
   void ConstructXFANode(CXFA_Node* pXFANode, CFDE_XMLNode* pXMLNode);
   CXFA_Node* GetRootNode() const;
   CFDE_XMLDoc* GetXMLDoc() const;
@@ -57,7 +57,7 @@
   CXFA_Node* NormalLoader(CXFA_Node* pXFANode,
                           CFDE_XMLNode* pXMLDoc,
                           XFA_XDPPACKET ePacketID,
-                          FX_BOOL bUseAttribute = TRUE);
+                          FX_BOOL bUseAttribute);
   CXFA_Node* DataLoader(CXFA_Node* pXFANode,
                         CFDE_XMLNode* pXMLDoc,
                         FX_BOOL bDoTransform);
