Skip to content

Commit 6089b9a

Browse files
joye-ramonexrSimpodin
authored andcommitted
Еще правки по парсингу xml из ЗП
Теперь движок нормально читает закрывающую ноду с пробелами вида </frame >
1 parent dcc7fc5 commit 6089b9a

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

ogsr_engine/xrCore/XML_Parser/tinyxmlparser.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,7 +1081,6 @@ const char* TiXmlElement::Parse( const char* p, TiXmlParsingData* data, TiXmlEnc
10811081

10821082
TIXML_STRING endTag ("</");
10831083
endTag += value;
1084-
endTag += ">";
10851084

10861085
// Check for and read attributes. Also look for an empty
10871086
// tag or an end tag.
@@ -1121,7 +1120,13 @@ const char* TiXmlElement::Parse( const char* p, TiXmlParsingData* data, TiXmlEnc
11211120
if ( StringEqual( p, endTag.c_str(), false, encoding ) )
11221121
{
11231122
p += endTag.length();
1124-
return p;
1123+
p = SkipWhiteSpace( p, encoding );
1124+
if ( p && *p && *p == '>' ) {
1125+
++p;
1126+
return p;
1127+
}
1128+
if ( document ) document->SetError( TIXML_ERROR_READING_END_TAG, p, data, encoding );
1129+
return 0;
11251130
}
11261131
else
11271132
{
@@ -1158,7 +1163,7 @@ const char* TiXmlElement::Parse( const char* p, TiXmlParsingData* data, TiXmlEnc
11581163
#endif
11591164
if ( node )
11601165
{
1161-
node->SetValue( attrib->Value() );
1166+
if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT, pErr, data, encoding );
11621167
xr_delete(attrib);
11631168
return 0;
11641169
}
@@ -1345,7 +1350,8 @@ const char* TiXmlComment::Parse( const char* p, TiXmlParsingData* data, TiXmlEnc
13451350

13461351
if ( !StringEqual( p, startTag, false, encoding ) )
13471352
{
1348-
document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding );
1353+
if ( document )
1354+
document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding );
13491355
return 0;
13501356
}
13511357
p += xr_strlen( startTag );
@@ -1373,10 +1379,6 @@ const char* TiXmlAttribute::Parse( const char* p, TiXmlParsingData* data, TiXmlE
13731379
p = SkipWhiteSpace( p, encoding );
13741380
if ( !p || !*p ) return 0;
13751381

1376-
// int tabsize = 4;
1377-
// if ( document )
1378-
// tabsize = document->TabSize();
1379-
13801382
if ( data )
13811383
{
13821384
data->Stamp( p, encoding );
@@ -1497,7 +1499,8 @@ const char* TiXmlText::Parse( const char* p, TiXmlParsingData* data, TiXmlEncodi
14971499

14981500
if ( !StringEqual( p, startTag, false, encoding ) )
14991501
{
1500-
document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding );
1502+
if ( document )
1503+
document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding );
15011504
return 0;
15021505
}
15031506
p += xr_strlen( startTag );

0 commit comments

Comments
 (0)