mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-31 03:00:05 +00:00
Fix for parsing XML elements with comments at the start of a text block.
This commit is contained in:
parent
04650ce6ea
commit
1fc549f666
2 changed files with 31 additions and 13 deletions
|
|
@ -371,8 +371,8 @@ void XmlDocument::readQuotedString (String& result)
|
|||
}
|
||||
else if (character == 0)
|
||||
{
|
||||
outOfData = true;
|
||||
setLastError ("unmatched quotes", false);
|
||||
outOfData = true;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -432,7 +432,7 @@ XmlElement* XmlDocument::readNextElement (const bool alsoParseSubElements)
|
|||
++input;
|
||||
|
||||
if (alsoParseSubElements)
|
||||
readChildElements (node);
|
||||
readChildElements (*node);
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -487,9 +487,9 @@ XmlElement* XmlDocument::readNextElement (const bool alsoParseSubElements)
|
|||
return node;
|
||||
}
|
||||
|
||||
void XmlDocument::readChildElements (XmlElement* parent)
|
||||
void XmlDocument::readChildElements (XmlElement& parent)
|
||||
{
|
||||
LinkedListPointer<XmlElement>::Appender childAppender (parent->firstChildElement);
|
||||
LinkedListPointer<XmlElement>::Appender childAppender (parent.firstChildElement);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
|
|
@ -563,7 +563,25 @@ void XmlDocument::readChildElements (XmlElement* parent)
|
|||
const juce_wchar c = *input;
|
||||
|
||||
if (c == '<')
|
||||
{
|
||||
if (input[1] == '!' && input[2] == '-' && input[3] == '-')
|
||||
{
|
||||
input += 4;
|
||||
const int closeComment = input.indexOf (CharPointer_ASCII ("-->"));
|
||||
|
||||
if (closeComment < 0)
|
||||
{
|
||||
setLastError ("unterminated comment", false);
|
||||
outOfData = true;
|
||||
return;
|
||||
}
|
||||
|
||||
input += closeComment + 3;
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (c == 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -156,23 +156,23 @@ private:
|
|||
String lastError, dtdText;
|
||||
StringArray tokenisedDTD;
|
||||
bool needToLoadDTD, ignoreEmptyTextElements;
|
||||
ScopedPointer <InputSource> inputSource;
|
||||
ScopedPointer<InputSource> inputSource;
|
||||
|
||||
XmlElement* parseDocumentElement (String::CharPointerType, bool outer);
|
||||
void setLastError (const String& desc, bool carryOn);
|
||||
void setLastError (const String&, bool carryOn);
|
||||
bool parseHeader();
|
||||
bool parseDTD();
|
||||
void skipNextWhiteSpace();
|
||||
juce_wchar readNextChar() noexcept;
|
||||
XmlElement* readNextElement (bool alsoParseSubElements);
|
||||
void readChildElements (XmlElement* parent);
|
||||
void readQuotedString (String& result);
|
||||
void readEntity (String& result);
|
||||
void readChildElements (XmlElement&);
|
||||
void readQuotedString (String&);
|
||||
void readEntity (String&);
|
||||
|
||||
String getFileContents (const String& filename) const;
|
||||
String expandEntity (const String& entity);
|
||||
String expandExternalEntity (const String& entity);
|
||||
String getParameterEntity (const String& entity);
|
||||
String getFileContents (const String&) const;
|
||||
String expandEntity (const String&);
|
||||
String expandExternalEntity (const String&);
|
||||
String getParameterEntity (const String&);
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (XmlDocument)
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue