CTestSVN: Fix segfault when CTEST_UPDATE_VERSION_ONLY is enabled
Before the change the list of externals was queried only before the svn update. With the change the list is queried both before and after. This should also be more accurate since the list of externals might change during the update.
This commit is contained in:
parent
a7305ef00a
commit
b35311ca44
@ -108,13 +108,8 @@ std::string cmCTestSVN::LoadInfo(SVNInfo& svninfo)
|
|||||||
|
|
||||||
void cmCTestSVN::NoteOldRevision()
|
void cmCTestSVN::NoteOldRevision()
|
||||||
{
|
{
|
||||||
// Info for root repository
|
this->LoadRepositories();
|
||||||
this->Repositories.push_back(SVNInfo(""));
|
|
||||||
this->RootInfo = &(this->Repositories.back());
|
|
||||||
// Info for the external repositories
|
|
||||||
this->LoadExternals();
|
|
||||||
|
|
||||||
// Get info for all the repositories
|
|
||||||
std::list<SVNInfo>::iterator itbeg = this->Repositories.begin();
|
std::list<SVNInfo>::iterator itbeg = this->Repositories.begin();
|
||||||
std::list<SVNInfo>::iterator itend = this->Repositories.end();
|
std::list<SVNInfo>::iterator itend = this->Repositories.end();
|
||||||
for (; itbeg != itend; itbeg++) {
|
for (; itbeg != itend; itbeg++) {
|
||||||
@ -134,7 +129,8 @@ void cmCTestSVN::NoteOldRevision()
|
|||||||
|
|
||||||
void cmCTestSVN::NoteNewRevision()
|
void cmCTestSVN::NoteNewRevision()
|
||||||
{
|
{
|
||||||
// Get info for the external repositories
|
this->LoadRepositories();
|
||||||
|
|
||||||
std::list<SVNInfo>::iterator itbeg = this->Repositories.begin();
|
std::list<SVNInfo>::iterator itbeg = this->Repositories.begin();
|
||||||
std::list<SVNInfo>::iterator itend = this->Repositories.end();
|
std::list<SVNInfo>::iterator itend = this->Repositories.end();
|
||||||
for (; itbeg != itend; itbeg++) {
|
for (; itbeg != itend; itbeg++) {
|
||||||
@ -534,8 +530,13 @@ private:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void cmCTestSVN::LoadExternals()
|
void cmCTestSVN::LoadRepositories()
|
||||||
{
|
{
|
||||||
|
// Info for root repository
|
||||||
|
this->Repositories.clear();
|
||||||
|
this->Repositories.push_back(SVNInfo(""));
|
||||||
|
this->RootInfo = &(this->Repositories.back());
|
||||||
|
|
||||||
// Run "svn status" to get the list of external repositories
|
// Run "svn status" to get the list of external repositories
|
||||||
std::vector<const char*> svn_status;
|
std::vector<const char*> svn_status;
|
||||||
svn_status.push_back("status");
|
svn_status.push_back("status");
|
||||||
|
@ -86,7 +86,7 @@ private:
|
|||||||
SVNInfo* RootInfo;
|
SVNInfo* RootInfo;
|
||||||
|
|
||||||
std::string LoadInfo(SVNInfo& svninfo);
|
std::string LoadInfo(SVNInfo& svninfo);
|
||||||
void LoadExternals();
|
void LoadRepositories();
|
||||||
void LoadModifications() CM_OVERRIDE;
|
void LoadModifications() CM_OVERRIDE;
|
||||||
void LoadRevisions() CM_OVERRIDE;
|
void LoadRevisions() CM_OVERRIDE;
|
||||||
void LoadRevisions(SVNInfo& svninfo);
|
void LoadRevisions(SVNInfo& svninfo);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user