Introduced .cfg file format version to 2 (to prevent older cppcheck versions from failing silently when reading them), because 5b287fc849
introduced a backward-incompatible feature.
Increased format version of std.cfg, which is the only cfg file that makes use of the new backward incompatible feature. Refactorization: Avoid a redundant std::string::find()-call
This commit is contained in:
parent
7a90b36cca
commit
ebfdacb0d3
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<def format="1">
|
<def format="2">
|
||||||
<!-- void abort(void); -->
|
<!-- void abort(void); -->
|
||||||
<function name="abort">
|
<function name="abort">
|
||||||
<noreturn>true</noreturn>
|
<noreturn>true</noreturn>
|
||||||
|
|
|
@ -36,12 +36,13 @@ Library::Error Library::load(const char exename[], const char path[])
|
||||||
{
|
{
|
||||||
if (std::strchr(path,',') != nullptr) {
|
if (std::strchr(path,',') != nullptr) {
|
||||||
std::string p(path);
|
std::string p(path);
|
||||||
while (p.find(",") != std::string::npos) {
|
std::string::size_type pos = p.find(',');
|
||||||
const std::string::size_type pos = p.find(",");
|
while (pos != std::string::npos) {
|
||||||
const Error &e = load(exename, p.substr(0,pos).c_str());
|
const Error &e = load(exename, p.substr(0,pos).c_str());
|
||||||
if (e.errorcode != OK)
|
if (e.errorcode != OK)
|
||||||
return e;
|
return e;
|
||||||
p = p.substr(pos+1);
|
p = p.substr(pos+1);
|
||||||
|
pos = p.find(',');
|
||||||
}
|
}
|
||||||
if (!p.empty())
|
if (!p.empty())
|
||||||
return load(exename, p.c_str());
|
return load(exename, p.c_str());
|
||||||
|
@ -111,11 +112,11 @@ Library::Error Library::load(const tinyxml2::XMLDocument &doc)
|
||||||
return Error(UNSUPPORTED_FORMAT, rootnode->Name());
|
return Error(UNSUPPORTED_FORMAT, rootnode->Name());
|
||||||
|
|
||||||
const char* format_string = rootnode->Attribute("format");
|
const char* format_string = rootnode->Attribute("format");
|
||||||
int format = 1;
|
int format = 1; // Assume format version 1 if nothing else is specified (very old .cfg files had no 'format' attribute)
|
||||||
if (format_string)
|
if (format_string)
|
||||||
format = atoi(format_string);
|
format = atoi(format_string);
|
||||||
|
|
||||||
if (format > 1)
|
if (format > 2 || format <= 0)
|
||||||
return Error(UNSUPPORTED_FORMAT);
|
return Error(UNSUPPORTED_FORMAT);
|
||||||
|
|
||||||
std::set<std::string> unknown_elements;
|
std::set<std::string> unknown_elements;
|
||||||
|
|
Loading…
Reference in New Issue