Prevented buffer overflows in case of invalid times (which could happen e.g.

as result of estimated times on a track with invalid drivelines), see also
bug 3078740.


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@6180 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk 2010-10-01 11:00:22 +00:00
parent 9bee46773a
commit 6a6d574823

View File

@ -361,6 +361,15 @@ namespace StringUtils
std::string timeToString(float time)
{
int int_time = (int)(time*100.0f+0.5f);
// Avoid problems if time is negative or way too large (which
// should only happen if something is broken in a track elsewhere,
// and an incorrect finishing time is estimated.
if(int_time<0)
return std::string("00:00:00");
else if(int_time >= 10000*60) // up to 9999:59.99
return std::string("**:**:**");
int min = int_time / 6000;
int sec = (int_time-min*6000)/100;
int hundredths = (int_time - min*6000-sec*100);