From ee2b61dae63ed0e94e9476d41d3d1f2642acf798 Mon Sep 17 00:00:00 2001 From: qndel Date: Fri, 20 Oct 2023 18:24:48 +0200 Subject: [PATCH] Clean up SDL_GetClipboardText in chat paste (#6731) --- Source/control.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/control.cpp b/Source/control.cpp index cd2068595..dc663c8a9 100644 --- a/Source/control.cpp +++ b/Source/control.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -52,6 +53,7 @@ #include "utils/parse_int.hpp" #include "utils/screen_reader.hpp" #include "utils/sdl_geometry.h" +#include "utils/sdl_ptrs.h" #include "utils/str_case.hpp" #include "utils/str_cat.hpp" #include "utils/string_or_view.hpp" @@ -1594,13 +1596,12 @@ bool control_presskeys(SDL_Keycode vkey) case SDLK_v: if ((SDL_GetModState() & KMOD_CTRL) != 0) { if (SDL_HasClipboardText() == SDL_TRUE) { - char *clipboard = SDL_GetClipboardText(); - if (clipboard == nullptr) { + std::unique_ptr> clipboard { SDL_GetClipboardText() }; + if (clipboard == nullptr || *clipboard == '\0') { Log("{}", SDL_GetError()); } else { - strncat(TalkMessage, clipboard, sizeof(TalkMessage) - strlen(TalkMessage) - 1); + strncat(TalkMessage, clipboard.get(), sizeof(TalkMessage) - strlen(TalkMessage) - 1); } - SDL_free(clipboard); } } return true;