From a97f468a0226851385a0578b98b1f2ef1dfccbbe Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 14:20:18 +0000 Subject: [PATCH] Add remove_duplicate_mimes() and call it from update_allowed_mimes_for_drop() Fixes #9657 --- kitty/glfw.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/kitty/glfw.c b/kitty/glfw.c index 206a68625..a85044cfa 100644 --- a/kitty/glfw.c +++ b/kitty/glfw.c @@ -682,6 +682,23 @@ is_droppable_mime(const char *mime) { return 0; } +static size_t +remove_duplicate_mimes(const char **mimes, size_t count) { + // Use simple O(n²) scan since lists are typically small + size_t new_count = 0; + for (size_t i = 0; i < count; i++) { + bool is_duplicate = false; + for (size_t j = 0; j < new_count; j++) { + if (strcmp(mimes[i], mimes[j]) == 0) { is_duplicate = true; break; } + } + if (!is_duplicate) { + if (new_count != i) SWAP(mimes[i], mimes[new_count]); + new_count++; + } + } + return new_count; +} + static void update_allowed_mimes_for_drop(GLFWDropEvent *ev) { if (ev->mimes && ev->num_mimes) { @@ -712,7 +729,7 @@ update_allowed_mimes_for_drop(GLFWDropEvent *ev) { } } if (prio_arr != priorities) free(prio_arr); - ev->num_mimes = new_count; + ev->num_mimes = remove_duplicate_mimes(ev->mimes, new_count); } }