From ce6c45d271a2e6dd6ec250222101dcec0af7800d Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Fri, 14 Oct 2022 15:04:10 +0200
Subject: [PATCH] BUILD: Fix some compilation issues with Qt files

---
 CMakeLists.txt                   |  3 ++-
 src/module/qt_window/qthelper.hh | 12 +++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f31a4be3..164234d7 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 9ed45600..9012c6e5 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]) {
-- 
GitLab