Fix infinite loop for objects that reference themselves.
[pdfium.git] / core / src / fxcrt / fx_xml_composer.cpp
index 7858290..ed233ff 100644 (file)
@@ -6,35 +6,36 @@
 
 #include "../../include/fxcrt/fx_xml.h"
 #include "xml_int.h"
-void FX_XML_SplitQualifiedName(FX_BSTR bsFullName, CFX_ByteStringC &bsSpace, CFX_ByteStringC &bsName)
-{
-    if (bsFullName.IsEmpty()) {
-        return;
-    }
-    int32_t iStart = 0;
-    for (; iStart < bsFullName.GetLength(); iStart ++) {
-        if (bsFullName.GetAt(iStart) == ':') {
-            break;
-        }
-    }
-    if (iStart >= bsFullName.GetLength()) {
-        bsName = bsFullName;
-    } else {
-        bsSpace = CFX_ByteStringC(bsFullName.GetCStr(), iStart);
-        iStart ++;
-        bsName = CFX_ByteStringC(bsFullName.GetCStr() + iStart, bsFullName.GetLength() - iStart);
+void FX_XML_SplitQualifiedName(const CFX_ByteStringC& bsFullName,
+                               CFX_ByteStringC& bsSpace,
+                               CFX_ByteStringC& bsName) {
+  if (bsFullName.IsEmpty()) {
+    return;
+  }
+  int32_t iStart = 0;
+  for (; iStart < bsFullName.GetLength(); iStart++) {
+    if (bsFullName.GetAt(iStart) == ':') {
+      break;
     }
+  }
+  if (iStart >= bsFullName.GetLength()) {
+    bsName = bsFullName;
+  } else {
+    bsSpace = CFX_ByteStringC(bsFullName.GetCStr(), iStart);
+    iStart++;
+    bsName = CFX_ByteStringC(bsFullName.GetCStr() + iStart,
+                             bsFullName.GetLength() - iStart);
+  }
 }
-void CXML_Element::SetTag(FX_BSTR qSpace, FX_BSTR tagname)
-{
-    m_QSpaceName = qSpace;
-    m_TagName = tagname;
+void CXML_Element::SetTag(const CFX_ByteStringC& qSpace,
+                          const CFX_ByteStringC& tagname) {
+  m_QSpaceName = qSpace;
+  m_TagName = tagname;
 }
-void CXML_Element::SetTag(FX_BSTR qTagName)
-{
-    ASSERT(!qTagName.IsEmpty());
-    CFX_ByteStringC bsSpace, bsName;
-    FX_XML_SplitQualifiedName(qTagName, bsSpace, bsName);
-    m_QSpaceName = bsSpace;
-    m_TagName = bsName;
+void CXML_Element::SetTag(const CFX_ByteStringC& qTagName) {
+  ASSERT(!qTagName.IsEmpty());
+  CFX_ByteStringC bsSpace, bsName;
+  FX_XML_SplitQualifiedName(qTagName, bsSpace, bsName);
+  m_QSpaceName = bsSpace;
+  m_TagName = bsName;
 }