From e7bcd7b852a37b6e4b0cafb34d86721abcd05d99 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 6 Apr 2021 15:16:24 +0200 Subject: [PATCH] [Carousel] Protection --- radio/src/thirdparty/libopenui/src/carousel.cpp | 2 +- radio/src/thirdparty/libopenui/src/carousel.h | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/radio/src/thirdparty/libopenui/src/carousel.cpp b/radio/src/thirdparty/libopenui/src/carousel.cpp index 5495ba000..81c383071 100644 --- a/radio/src/thirdparty/libopenui/src/carousel.cpp +++ b/radio/src/thirdparty/libopenui/src/carousel.cpp @@ -25,7 +25,7 @@ void CarouselWindow::update() first = max(0, first); coord_t lastPosition = 0; coord_t spacing = 10; - if (count > 1) + if (items.size() > 0 && count > 0) spacing = (width() - items[0]->back->width() * (count - 1) - items[0]->front->width()) / (count - 1); int index = 0; diff --git a/radio/src/thirdparty/libopenui/src/carousel.h b/radio/src/thirdparty/libopenui/src/carousel.h index 661fa58b5..613548e9f 100644 --- a/radio/src/thirdparty/libopenui/src/carousel.h +++ b/radio/src/thirdparty/libopenui/src/carousel.h @@ -55,7 +55,7 @@ class CarouselWindow: public Window { } - void deleteLater(bool detach = true, bool trash = true) override + void deleteLater(bool detach = true, bool trash = true) override // NOLINT(google-default-arguments) { if (_deleted) return; @@ -86,9 +86,11 @@ class CarouselWindow: public Window void select(int index, bool scroll = true) { selection = index; - auto item = items[selection]; - if (item->selectHandler) { - item->selectHandler(); + if (selection >= 0) { + auto item = items[selection]; + if (item->selectHandler) { + item->selectHandler(); + } } update(); } @@ -96,7 +98,7 @@ class CarouselWindow: public Window protected: std::vector items; int selection = 0; - uint8_t count; + unsigned count; void update(); };