samples: modules: lvgl: fix integer overflow

`lv_task_handler()` returns a `uint32_t`, but `k_msleep` takes a
`int32_t`.

If no timer exists, `lv_task_handler()` returns `UINT32_MAX` to indicate
that we should wait forever. However, this gets auto-cast to `-1`,
indicating to `k_msleep` to not wait at all, creating a busy loop.

Hence, a clamping to `[0, INT32_MAX]` is required.

Signed-off-by: Martin Stumpf <finomnis@gmail.com>
This commit is contained in:
Martin Stumpf 2024-11-10 10:16:05 +01:00 committed by Anas Nashif
commit 86a126dba4
2 changed files with 6 additions and 2 deletions

View file

@ -89,7 +89,9 @@ int main(void)
display_blanking_off(display_dev);
while (1) {
k_msleep(lv_task_handler());
uint32_t sleep_ms = lv_task_handler();
k_msleep(MIN(sleep_ms, INT32_MAX));
}
return 0;

View file

@ -40,7 +40,9 @@ int main(void)
display_blanking_off(display_dev);
while (1) {
k_msleep(lv_task_handler());
uint32_t sleep_ms = lv_task_handler();
k_msleep(MIN(sleep_ms, INT32_MAX));
}
return 0;