diff --git a/CMakeLists.txt b/CMakeLists.txt index f31a4be3e58fef012af5980cb8d058a3197e8ed9..164234d710059aee8339a3883ea70591cb96341c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,7 +85,8 @@ set(Clang_C_FLAGS -Wno-missing-variable-declarations -Wno-unknown-warning-option -Wno-declaration-after-statement - -fcolor-diagnostics + -Wno-covered-switch-default # We migh want to have a default even if everything is covered + -fcolor-diagnostics # Colors! ) set(Clang_CXX_FLAGS $<$<COMPILE_LANGUAGE:CXX>:-Wno-c++98-compat-pedantic> diff --git a/src/module/qt_window/qthelper.hh b/src/module/qt_window/qthelper.hh index 9ed45600d98a84b12c015fd31a3b6466a16b87d8..9012c6e564268d088b423360493935886b8bf361 100644 --- a/src/module/qt_window/qthelper.hh +++ b/src/module/qt_window/qthelper.hh @@ -90,7 +90,7 @@ private: Q_DISABLE_COPY(node_builder) mpv_node node_; - mpv_node_list *create_list(mpv_node *dst, bool is_map, int num) + mpv_node_list *create_list(mpv_node *dst, bool is_map, qsizetype num) { dst->format = is_map ? MPV_FORMAT_NODE_MAP : MPV_FORMAT_NODE_ARRAY; mpv_node_list *list = new mpv_node_list(); @@ -151,7 +151,10 @@ private: mpv_node_list *list = create_list(dst, false, qlist.size()); if (!list) goto fail; - list->num = qlist.size(); + const qsizetype qlist_size = qlist.size(); + if (qlist_size >= std::numeric_limits<int>::max()) + goto fail; + list->num = static_cast<int>(qlist_size); for (int n = 0; n < qlist.size(); n++) set(&list->values[n], qlist[n]); } else if (src.canConvert<QVariantMap>()) { @@ -159,7 +162,10 @@ private: mpv_node_list *list = create_list(dst, true, qmap.size()); if (!list) goto fail; - list->num = qmap.size(); + const qsizetype qmap_size = qmap.size(); + if (qmap_size >= std::numeric_limits<int>::max()) + goto fail; + list->num = static_cast<int>(qmap_size); for (int n = 0; n < qmap.size(); n++) { list->keys[n] = dup_qstring(qmap.keys()[n]); if (!list->keys[n]) {