Patch level : 12.0 372

Files correlati     : sy
Commento            : Corretto causa crash programmi causato da xvaga.dll.
Durante il calcolo del tempo rimanente con operazioni complesse nSpeed poteva risultare 0 facendo bloccare il programma sul conto nRemaining / nSpeed.
Adesso sono tutti valori float

git-svn-id: svn://10.65.10.50/branches/R_10_00@23701 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2017-03-24 09:53:52 +00:00
parent 6dbe63915e
commit 24d9fc6af3

View File

@ -1083,9 +1083,10 @@ bool Win32ProgressIndicator::SetProgress(long nCurrent, long nTotal)
const long nSec = (clock() -_start) / CLOCKS_PER_SEC;
if (nSec > 0)
{
const int nSpeed = nCurrent / nSec;
const int nRemaining = nTotal - nCurrent;
const int remainingTime = nRemaining / nSpeed;
// Trasformati i valori in float per evitare problemi, capitava che durante operazioni complesse nSpeed risultasse 0 per poi far crashare il programma 2 istruzioni dopo
const float nSpeed = (float)nCurrent / (float)nSec;
const float nRemaining = (float)nTotal - nCurrent;
const float remainingTime = nRemaining / nSpeed; // <-- Qua
int s = nSec;
const int h = s / 3600; s %= 3600;
const int m = s / 60; s %= 60;
@ -1093,14 +1094,14 @@ bool Win32ProgressIndicator::SetProgress(long nCurrent, long nTotal)
str = str.Format("%d%% - Trascorsi %02d:%02d:%02d", _perc, h, m, s);
if (nSpeed < 120)
str << str.Format(" - Velocità %d/sec - %d sec.alla fine", nSpeed, remainingTime);
str << str.Format(" - Velocità %.2f/sec - %.0f sec.alla fine", nSpeed, remainingTime);
else
{
const int mins = remainingTime / 60;
str << str.Format(" - Velocità %d/min", nSpeed * 60);
str << str.Format(" - Velocità %.2f/min", nSpeed * 60);
if (mins < 2)
str << str.Format(" - %d sec.alla fine", remainingTime);
str << str.Format(" - %.0f sec.alla fine", remainingTime);
else
str << str.Format(" - %d min.alla fine", mins);
}