New directories fix and a valid loop breaker

This commit is contained in:
kabachuha 2020-08-14 22:48:42 +03:00 committed by Iris Morelle
parent 5a77701ebe
commit 43817eccf0
2 changed files with 8 additions and 4 deletions

View File

@ -191,9 +191,12 @@ static void write_difference(config& pack, const config& from, const config& to,
for(const config& d : to.child_range("dir")) {
const config& origin_dir = from.find_child("dir", "name", d["name"]);
config& dir = pack.add_child("dir");
if(origin_dir) {
config& dir = pack.add_child("dir");
write_difference(dir, origin_dir, d, with_content);
} else {
const config dummy_dir = config("name", d["name"]);
write_difference(dir, dummy_dir, d, with_content);
}
}
}

View File

@ -793,8 +793,9 @@ void server::handle_request_campaign(const server::request& req)
auto iter = version_map.begin();
int size = 0;
bool failed = false;
while(std::distance(iter, version_map.end()) > 1) {
while(!failed && std::distance(iter, version_map.end()) > 1) {
const config& prev_version = iter->second;
iter++;
const config& next_version = iter->second;
@ -811,14 +812,14 @@ void server::handle_request_campaign(const server::request& req)
} else {
WRN_CS << "Unable to create an update pack sequence from version (" << from << ") to ("
<< to << ") for the addon '" << req.cfg["name"].str() << "'. A full pack will be sent instead!\n";
pack_data = config::get_invalid();
failed = true;
break;
}
}
}
}
if(pack_data && !pack_data.empty()) {
if(!failed && pack_data && !pack_data.empty()) {
std::ostringstream ostr;
write(ostr, pack_data);
std::string wml = ostr.str();