Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/ps/XML/Xeromyces.cpp
Show First 20 Lines • Show All 172 Lines • ▼ Show 20 Lines | if (!doc) | ||||
LOGERROR("CXeromyces: Failed to parse XML file %s", filename.string8()); | LOGERROR("CXeromyces: Failed to parse XML file %s", filename.string8()); | ||||
return PSRETURN_Xeromyces_XMLParseError; | return PSRETURN_Xeromyces_XMLParseError; | ||||
} | } | ||||
{ | { | ||||
std::lock_guard<std::mutex> lock(g_ValidatorCacheLock); | std::lock_guard<std::mutex> lock(g_ValidatorCacheLock); | ||||
RelaxNGValidator& validator = GetValidator(validatorName); | RelaxNGValidator& validator = GetValidator(validatorName); | ||||
if (validator.CanValidate() && !validator.ValidateEncoded(doc)) | if (validator.CanValidate() && !validator.ValidateEncoded(doc)) | ||||
// For now, log the error and continue, in the future we might fail | { | ||||
LOGERROR("CXeromyces: failed to validate XML file %s", filename.string8()); | LOGERROR("CXeromyces: failed to validate XML file %s", filename.string8()); | ||||
return PSRETURN_Xeromyces_XMLValidationFailed; | |||||
} | |||||
} | } | ||||
WriteBuffer writeBuffer; | WriteBuffer writeBuffer; | ||||
CreateXMB(doc, writeBuffer); | CreateXMB(doc, writeBuffer); | ||||
xmlFreeDoc(doc); | xmlFreeDoc(doc); | ||||
// Save the file to disk, so it can be loaded quickly next time | // Save the file to disk, so it can be loaded quickly next time. | ||||
// Don't save if invalid, because we want the syntax error every program start. | |||||
vfs->CreateFile(xmbPath, writeBuffer.Data(), writeBuffer.Size()); | vfs->CreateFile(xmbPath, writeBuffer.Data(), writeBuffer.Size()); | ||||
m_XMBBuffer = writeBuffer.Data(); // add a reference | m_XMBBuffer = writeBuffer.Data(); // add a reference | ||||
// Set up the XMBFile | // Set up the XMBFile | ||||
const bool ok = Initialise((const char*)m_XMBBuffer.get()); | const bool ok = Initialise((const char*)m_XMBBuffer.get()); | ||||
ENSURE(ok); | ENSURE(ok); | ||||
Show All 29 Lines | if (!doc) | ||||
LOGERROR("CXeromyces: Failed to parse XML string"); | LOGERROR("CXeromyces: Failed to parse XML string"); | ||||
return PSRETURN_Xeromyces_XMLParseError; | return PSRETURN_Xeromyces_XMLParseError; | ||||
} | } | ||||
{ | { | ||||
std::lock_guard<std::mutex> lock(g_ValidatorCacheLock); | std::lock_guard<std::mutex> lock(g_ValidatorCacheLock); | ||||
RelaxNGValidator& validator = GetValidator(validatorName); | RelaxNGValidator& validator = GetValidator(validatorName); | ||||
if (validator.CanValidate() && !validator.ValidateEncoded(doc)) | if (validator.CanValidate() && !validator.ValidateEncoded(doc)) | ||||
// For now, log the error and continue, in the future we might fail | { | ||||
LOGERROR("CXeromyces: failed to validate XML string"); | LOGERROR("CXeromyces: failed to validate XML string"); | ||||
return PSRETURN_Xeromyces_XMLValidationFailed; | |||||
} | |||||
} | } | ||||
WriteBuffer writeBuffer; | WriteBuffer writeBuffer; | ||||
CreateXMB(doc, writeBuffer); | CreateXMB(doc, writeBuffer); | ||||
xmlFreeDoc(doc); | xmlFreeDoc(doc); | ||||
m_XMBBuffer = writeBuffer.Data(); // add a reference | m_XMBBuffer = writeBuffer.Data(); // add a reference | ||||
▲ Show 20 Lines • Show All 176 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator