if (is_last) {
/* Compute stats based on the starting info. */
- diff = msdiff(&ph_start.time, now);
- if (!diff)
+ if (!ph_start.time.tv_sec
+ || !(diff = msdiff(&ph_start.time, now)))
diff = 1;
rate = (double) (ofs - ph_start.ofs) * 1000.0 / diff / 1024.0;
/* Switch to total time taken for our last update. */
remain = (double) diff / 1000.0;
} else {
/* Compute stats based on recent progress. */
- diff = msdiff(&ph_list[oldest_hpos].time, now);
- rate = diff ? (double) (ofs - ph_list[oldest_hpos].ofs) * 1000.0
- / diff / 1024.0 : 0;
+ if (!(diff = msdiff(&ph_list[oldest_hpos].time, now)))
+ diff = 1;
+ rate = (double) (ofs - ph_list[oldest_hpos].ofs) * 1000.0
+ / diff / 1024.0;
remain = rate ? (double) (size - ofs) / rate / 1000.0 : 0.0;
}