Remove CFX_WideStringBuf from cxfa_document_builder.cpp
Avoid some buffer-to-buffer copies under MakeString().
Change-Id: I94da43abfc6ef9504a5453042a6f82fae1770f61
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/87950
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_document_builder.cpp b/xfa/fxfa/parser/cxfa_document_builder.cpp
index 05fa2a7..02226e7 100644
--- a/xfa/fxfa/parser/cxfa_document_builder.cpp
+++ b/xfa/fxfa/parser/cxfa_document_builder.cpp
@@ -11,7 +11,6 @@
#include "core/fxcrt/autorestorer.h"
#include "core/fxcrt/cfx_readonlymemorystream.h"
-#include "core/fxcrt/cfx_widetextbuf.h"
#include "core/fxcrt/fx_codepage.h"
#include "core/fxcrt/fx_extension.h"
#include "core/fxcrt/xml/cfx_xmlchardata.h"
@@ -909,8 +908,8 @@
void CXFA_DocumentBuilder::ParseDataValue(CXFA_Node* pXFANode,
CFX_XMLNode* pXMLNode,
XFA_PacketType ePacketID) {
- CFX_WideTextBuf wsValueTextBuf;
- CFX_WideTextBuf wsCurValueTextBuf;
+ WideString wsValue;
+ WideString wsCurValue;
bool bMarkAsCompound = false;
CFX_XMLNode* pXMLCurValueNode = nullptr;
for (CFX_XMLNode* pXMLChild = pXMLNode->GetFirstChild(); pXMLChild;
@@ -924,19 +923,18 @@
WideString wsText = pText->GetText();
if (!pXMLCurValueNode)
pXMLCurValueNode = pXMLChild;
- wsCurValueTextBuf << wsText;
+ wsCurValue += wsText;
continue;
}
if (XFA_RecognizeRichText(ToXMLElement(pXMLChild))) {
WideString wsText = GetPlainTextFromRichText(ToXMLElement(pXMLChild));
if (!pXMLCurValueNode)
pXMLCurValueNode = pXMLChild;
- wsCurValueTextBuf << wsText;
+ wsCurValue += wsText;
continue;
}
bMarkAsCompound = true;
if (pXMLCurValueNode) {
- WideString wsCurValue = wsCurValueTextBuf.MakeString();
if (!wsCurValue.IsEmpty()) {
CXFA_Node* pXFAChild =
node_factory_->CreateNode(ePacketID, XFA_Element::DataValue);
@@ -948,8 +946,8 @@
pXFANode->InsertChildAndNotify(pXFAChild, nullptr);
pXFAChild->SetXMLMappingNode(pXMLCurValueNode);
pXFAChild->SetFlag(XFA_NodeFlag::kInitialized);
- wsValueTextBuf << wsCurValue;
- wsCurValueTextBuf.Clear();
+ wsValue += wsCurValue;
+ wsCurValue.clear();
}
pXMLCurValueNode = nullptr;
}
@@ -964,13 +962,10 @@
pXFANode->InsertChildAndNotify(pXFAChild, nullptr);
pXFAChild->SetXMLMappingNode(pXMLChild);
pXFAChild->SetFlag(XFA_NodeFlag::kInitialized);
- WideString wsCurValue =
- pXFAChild->JSObject()->GetCData(XFA_Attribute::Value);
- wsValueTextBuf << wsCurValue;
+ wsValue += pXFAChild->JSObject()->GetCData(XFA_Attribute::Value);
}
if (pXMLCurValueNode) {
- WideString wsCurValue = wsCurValueTextBuf.MakeString();
if (!wsCurValue.IsEmpty()) {
if (bMarkAsCompound) {
CXFA_Node* pXFAChild =
@@ -984,13 +979,12 @@
pXFAChild->SetXMLMappingNode(pXMLCurValueNode);
pXFAChild->SetFlag(XFA_NodeFlag::kInitialized);
}
- wsValueTextBuf << wsCurValue;
- wsCurValueTextBuf.Clear();
+ wsValue += wsCurValue;
+ wsCurValue.clear();
}
pXMLCurValueNode = nullptr;
}
- WideString wsNodeValue = wsValueTextBuf.MakeString();
- pXFANode->JSObject()->SetCData(XFA_Attribute::Value, wsNodeValue);
+ pXFANode->JSObject()->SetCData(XFA_Attribute::Value, wsValue);
}
void CXFA_DocumentBuilder::ParseInstruction(CXFA_Node* pXFANode,