diff --git a/CHANGELOG.md b/CHANGELOG.md index 76cc0bbc..449d2f49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,13 @@ Changelog ========= -released (development) +unreleased (development) ------------------------ +# Bug: +- Check the selected element are within bounds for Dropdown. + + 0.11 ---- diff --git a/src/ftxui/component/component_fuzzer.cpp b/src/ftxui/component/component_fuzzer.cpp index 640a3301..d8c73d9b 100644 --- a/src/ftxui/component/component_fuzzer.cpp +++ b/src/ftxui/component/component_fuzzer.cpp @@ -57,7 +57,7 @@ Component GeneratorComponent(const char*& data, size_t& size, int depth) { if (depth <= 0) return Button(GeneratorString(data, size), [] {}); - switch (value % 18) { + switch (value % 19) { case 1: return Checkbox(GeneratorString(data, size), &g_bool); case 2: diff --git a/src/ftxui/component/dropdown.cpp b/src/ftxui/component/dropdown.cpp index 5886dc10..9cb9fa22 100644 --- a/src/ftxui/component/dropdown.cpp +++ b/src/ftxui/component/dropdown.cpp @@ -1,3 +1,4 @@ +#include #include // for __shared_ptr_access #include // for string #include // for move @@ -28,6 +29,7 @@ Component Dropdown(ConstStringListRef entries, int* selected) { } Element Render() override { + *selected_ = std::min((int)entries_.size() - 1, std::max(0, *selected_)); title_ = entries_[*selected_]; if (show_) { return vbox({