diff --git a/simgear/io/HTTPRepository.cxx b/simgear/io/HTTPRepository.cxx index 0e70c98c..9b86ca63 100644 --- a/simgear/io/HTTPRepository.cxx +++ b/simgear/io/HTTPRepository.cxx @@ -393,7 +393,12 @@ public: // We now have a list of entries that need to be updated, and a list // of orphan files that should be removed. - removeOrphans(orphans); + try { + removeOrphans(orphans); + } catch (sg_exception& e) { + _repository->failedToUpdateChild(_relativePath, HTTPRepository::ResultCode::REPO_ERROR_IO); + } + scheduleUpdates(toBeUpdated); } @@ -405,11 +410,10 @@ public: void removeOrphans(const PathList orphans) { - PathList::const_iterator it; - for (it = orphans.begin(); it != orphans.end(); ++it) { - if (it->file() == ".dirindex") continue; - if (it->file() == ".hash") continue; - removeChild(*it); + for (const auto& o : orphans) { + if (o.file() == ".dirindex") continue; + if (o.file() == ".hash") continue; + removeChild(o); } } @@ -771,7 +775,7 @@ private: if (!ok) { SG_LOG(SG_TERRASYNC, SG_WARN, "removal failed for:" << path); - throw sg_io_exception("Failed to remove existing file/dir:", path); + throw sg_io_exception("Failed to remove existing file/dir:", path, _repository->basePath.utf8Str(), false); } }