mirror of https://github.com/PCSX2/pcsx2.git
pcsx2: Improve GameDB multiline section parsing
If the entry separator (line of dashes) is found, assume the multiline section end tag is missing or incorrect and stop parsing so that it doesn't affect subsequent database entries. Also improve the error messages so it is slightly more clear what the error is.
This commit is contained in:
parent
8acc319a4a
commit
f47321c287
|
@ -45,13 +45,13 @@ public:
|
|||
void ReadGames();
|
||||
|
||||
protected:
|
||||
void doError(bool doMsg = false);
|
||||
void doError(const wxString& msg);
|
||||
bool extractMultiLine();
|
||||
void extract();
|
||||
};
|
||||
|
||||
void DBLoaderHelper::doError(bool doMsg) {
|
||||
if (doMsg) Console.Error(L"GameDatabase: Bad file data [%s]", WX_STR(m_dest));
|
||||
void DBLoaderHelper::doError(const wxString& msg) {
|
||||
Console.Error(msg);
|
||||
m_keyPair.Clear();
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ bool DBLoaderHelper::extractMultiLine() {
|
|||
if (m_dest[0] != L'[') return false; // All multiline sections begin with a '['!
|
||||
|
||||
if (!m_dest.EndsWith(L"]")) {
|
||||
doError(true);
|
||||
doError("GameDatabase: Malformed section start tag: " + m_dest);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -84,16 +84,21 @@ bool DBLoaderHelper::extractMultiLine() {
|
|||
|
||||
while(!m_reader.Eof()) {
|
||||
pxReadLine( m_reader, m_dest, m_intermediate );
|
||||
if (m_dest.CmpNoCase(endString) == 0) break;
|
||||
// Abort if the closing tag is missing/incorrect so subsequent database entries aren't affected.
|
||||
if (m_dest == "---------------------------------------------")
|
||||
break;
|
||||
if (m_dest.CmpNoCase(endString) == 0)
|
||||
return true;
|
||||
m_keyPair.value += m_dest + L"\n";
|
||||
}
|
||||
doError("GameDatabase: Missing or incorrect section end tag:\n" + m_keyPair.key + "\n" + m_keyPair.value);
|
||||
return true;
|
||||
}
|
||||
|
||||
void DBLoaderHelper::extract() {
|
||||
|
||||
if( !pxParseAssignmentString( m_dest, m_keyPair.key, m_keyPair.value ) ) return;
|
||||
if( m_keyPair.value.IsEmpty() ) doError(true);
|
||||
if( m_keyPair.value.IsEmpty() ) doError("GameDatabase: Bad file data: " + m_dest);
|
||||
}
|
||||
|
||||
void DBLoaderHelper::ReadGames()
|
||||
|
|
Loading…
Reference in New Issue