From: James Turner Date: Sat, 9 Nov 2013 15:22:15 +0000 (-0800) Subject: Fix some SVN errors/crashes. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=e973e406a37207492a35bc7cd78c91419105b7fc;p=simgear.git Fix some SVN errors/crashes. --- diff --git a/simgear/io/SVNReportParser.cxx b/simgear/io/SVNReportParser.cxx index 9a3077d2..b7f99d24 100644 --- a/simgear/io/SVNReportParser.cxx +++ b/simgear/io/SVNReportParser.cxx @@ -417,15 +417,16 @@ public: } else if (!strcmp(name, SVN_DAV_MD5_CHECKSUM)) { // validate against (presumably) just written file if (decodedFileMd5 != md5Sum) { + SG_LOG(SG_GENERAL, SG_INFO, "checksum fail on:" << currentPath); fail(SVNRepository::SVN_ERROR_CHECKSUM); } } else if (!strcmp(name, SVN_OPEN_DIRECTORY_TAG)) { + currentDir->updateReportComplete(); if (currentDir->parent()) { // pop the collection stack currentDir = currentDir->parent(); } - currentDir->updateReportComplete(); currentPath = currentDir->fsPath(); } else { // std::cout << "element:" << name; diff --git a/simgear/io/SVNRepository.cxx b/simgear/io/SVNRepository.cxx index cd0f378f..d3635fe8 100644 --- a/simgear/io/SVNRepository.cxx +++ b/simgear/io/SVNRepository.cxx @@ -136,6 +136,7 @@ namespace { // anonmouse SG_LOG(SG_IO, SG_WARN, "request for:" << url() << " return code " << responseCode()); _repo->propFindFailed(this, SVNRepository::SVN_ERROR_SOCKET); + _repo = NULL; } } @@ -163,6 +164,7 @@ namespace { // anonmouse { HTTP::Request::onFail(); _repo->propFindFailed(this, SVNRepository::SVN_ERROR_SOCKET); + _repo = NULL; } private: @@ -244,15 +246,19 @@ protected: SVNRepository::ResultCode err = _parser.parseXML(s, n); if (err) { _failed = true; - SG_LOG(SG_IO, SG_WARN, "SVN: request for:" << url() << " failed:" << err); + SG_LOG(SG_IO, SG_WARN, _repo->p << ": SVN: request for:" << url() << " failed:" << err); _repo->updateFailed(this, err); + _repo = NULL; } } virtual void onFail() { HTTP::Request::onFail(); - _repo->updateFailed(this, SVNRepository::SVN_ERROR_SOCKET); + if (_repo) { + _repo->updateFailed(this, SVNRepository::SVN_ERROR_SOCKET); + _repo = NULL; + } } private: SVNReportParser _parser;