- // Update the file size
- // For each action of type write
- double rate = lmm_variable_getvalue(action->getVariable());
- /* Hack to avoid rounding differences between x86 and x86_64
- * (note that the next sizes are of type sg_size_t). */
- long incr = delta * rate + 0.00001; // Use legacy value. I don't know what this hack can be... FIXME: Pierre, please check.
+ // Update the file size
+ // For each action of type write
+ double current_progress =
+ delta * lmm_variable_getvalue(action->getVariable());
+ long int incr = current_progress;
+
+ XBT_DEBUG("%s:\n\t progress = %.2f, current_progress = %.2f, "
+ "incr = %ld, lrint(1) = %ld, lrint(2) = %ld",
+ action->p_file->name,
+ action->progress, current_progress, incr,
+ lrint(action->progress + current_progress),
+ lrint(action->progress)+ incr);
+
+ /* Take care of rounding error accumulation */
+ if (lrint(action->progress + current_progress) >
+ lrint(action->progress)+ incr)
+ incr++;
+
+ action->progress +=current_progress;
+