Skip to content

Commit 78a798b

Browse files
Finomnismstumpf-vected
authored andcommitted
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 <[email protected]>
1 parent 7b53686 commit 78a798b

File tree

2 files changed

+6
-2
lines changed
  • samples/modules/lvgl

2 files changed

+6
-2
lines changed

samples/modules/lvgl/accelerometer_chart/src/main.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ int main(void)
8989
display_blanking_off(display_dev);
9090

9191
while (1) {
92-
k_msleep(lv_task_handler());
92+
uint32_t sleep_ms = lv_task_handler();
93+
94+
k_msleep(MIN(sleep_ms, INT32_MAX));
9395
}
9496

9597
return 0;

samples/modules/lvgl/demos/src/main.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ int main(void)
4040
display_blanking_off(display_dev);
4141

4242
while (1) {
43-
k_msleep(lv_task_handler());
43+
uint32_t sleep_ms = lv_task_handler();
44+
45+
k_msleep(MIN(sleep_ms, INT32_MAX));
4446
}
4547

4648
return 0;

0 commit comments

Comments
 (0)