Fixed crash in STK if a version number was only

two digits (like "0.5" instead of "0.5.0"). This
happens with the classic sand track.


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@11936 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk 2012-11-14 04:31:11 +00:00
parent 53cccb87da
commit 93da1096fc

View File

@ -663,7 +663,7 @@ namespace StringUtils
// of 9 to versions which are not a RC. We assert that any RC // of 9 to versions which are not a RC. We assert that any RC
// is less than 9 to guarantee the ordering. // is less than 9 to guarantee the ordering.
int release_candidate=9; int release_candidate=9;
if(sscanf(s.substr(s.length()-4, 4).c_str(), "-rc%d", if(s.length()>4 && sscanf(s.substr(s.length()-4, 4).c_str(), "-rc%d",
&release_candidate)==1) &release_candidate)==1)
{ {
s = s.substr(0, s.length()-4); s = s.substr(0, s.length()-4);
@ -681,7 +681,7 @@ namespace StringUtils
} }
std::vector<std::string> l = StringUtils::split(s, '.'); std::vector<std::string> l = StringUtils::split(s, '.');
while(l.size()<3) while(l.size()<3)
l.push_back(0); l.push_back("0");
int version = 1000000*atoi(l[0].c_str()) int version = 1000000*atoi(l[0].c_str())
+ 10000*atoi(l[1].c_str()) + 10000*atoi(l[1].c_str())
+ 100*atoi(l[2].c_str()) + 100*atoi(l[2].c_str())