Merge pull request #4184 from gudnimg/feedrate-fix-3_13

Fix regression where time remaining can overflow on status screen
This commit is contained in:
3d-gussner 2023-05-05 11:45:58 +02:00 committed by GitHub
commit 39c3e8a530
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 4 deletions

View File

@ -446,9 +446,9 @@ void lcdui_print_time(void)
//if remaining print time estimation is available print it else print elapsed time
int chars = 0;
if (printer_active()) {
uint16_t print_t = PRINT_TIME_REMAINING_INIT;
uint16_t print_tr = PRINT_TIME_REMAINING_INIT;
uint16_t print_tc = PRINT_TIME_REMAINING_INIT;
uint16_t print_t = PRINT_TIME_REMAINING_INIT; // unit: minutes
uint16_t print_tr = PRINT_TIME_REMAINING_INIT; // unit: minutes
uint16_t print_tc = PRINT_TIME_REMAINING_INIT; // unit: minutes
char suff = ' ';
char suff_doubt = ' ';
@ -491,7 +491,8 @@ void lcdui_print_time(void)
if (feedmultiply != 100 && (print_t == print_tr || print_t == print_tc)) {
suff_doubt = '?';
print_t = (100 * print_t) / feedmultiply;
// (print_t * 100) overflows uint16_t at 10.9 hours, uint32_t is required
print_t = (uint16_t)((100UL * (uint32_t)print_t) / feedmultiply);
}
if (print_t < 6000) //time<100h