From 339b8fbc1fc2e6a9fdf320448ec02ede680c7f5d Mon Sep 17 00:00:00 2001 From: collecting Date: Tue, 7 Oct 2025 05:07:58 +0000 Subject: [PATCH 1/3] add: STB Image Overflow Patch --- patches/stb_image-overflow-fix.patch | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 patches/stb_image-overflow-fix.patch diff --git a/patches/stb_image-overflow-fix.patch b/patches/stb_image-overflow-fix.patch new file mode 100644 index 000000000..ea736d5e0 --- /dev/null +++ b/patches/stb_image-overflow-fix.patch @@ -0,0 +1,22 @@ +diff --git externals/stb/stb_image.h externals/stb/stb_image.h +index 5e807a0a6..725d0ec9e 100644 +--- externals/stb/stb_image.h ++++ externals/stb/stb_image.h +@@ -5079,7 +5079,7 @@ static void stbi__de_iphone(stbi__png *z) + static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) + { + stbi_uc palette[1024], pal_img_n=0; +- stbi_uc has_trans=0, tc[3]={0}; ++ stbi_uc has_trans=0, tc[4]={0}; + stbi__uint16 tc16[3]; + stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; + int first=1,k,interlace=0, color=0, is_iphone=0; +@@ -5163,7 +5163,7 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + } else { +- for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger ++ for (k = 0; k < s->img_n && k < 4; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } + } + break; From 5ffcc350115d2978bbd9f9e53803f84570aa4ca7 Mon Sep 17 00:00:00 2001 From: collecting Date: Tue, 7 Oct 2025 05:09:39 +0000 Subject: [PATCH 2/3] fix: -p0 & new stb_image.h patch --- CMakeLists.txt | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index efc43b8cb..206e4a2b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -399,7 +399,7 @@ if(USE_DISCORD_PRESENCE) # Check if the target directory exists before trying to patch if(EXISTS "${PATCH_TARGET_DIR}") execute_process( - COMMAND git apply --ignore-whitespace "${PATCH_FILE}" + COMMAND git apply -p0 --ignore-whitespace "${PATCH_FILE}" WORKING_DIRECTORY "${PATCH_TARGET_DIR}" RESULT_VARIABLE PATCH_RESULT OUTPUT_QUIET @@ -422,7 +422,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(EXISTS "${MCL_PATCH_TARGET_DIR}") execute_process( - COMMAND git apply --ignore-whitespace "${MCL_PATCH_FILE}" + COMMAND git apply -p0 --ignore-whitespace "${MCL_PATCH_FILE}" WORKING_DIRECTORY "${MCL_PATCH_TARGET_DIR}" RESULT_VARIABLE MCL_PATCH_RESULT OUTPUT_QUIET @@ -437,6 +437,30 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") endif() endif() +# Apply a patch to stb_image.h to fix a string overflow warning with modern compilers +message(STATUS "Applying custom patch to stb_image.h...") + +set(STB_PATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/patches/stb_image-overflow-fix.patch") + +set(STB_PATCH_WORKING_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + +# Check if the file to be patched exists before trying to patch +if(EXISTS "${STB_PATCH_WORKING_DIR}/externals/stb/stb_image.h") + execute_process( + COMMAND git apply -p0 --ignore-whitespace "${STB_PATCH_FILE}" + WORKING_DIRECTORY "${STB_PATCH_WORKING_DIR}" + RESULT_VARIABLE PATCH_RESULT + OUTPUT_QUIET + ERROR_QUIET + ) + + if(NOT PATCH_RESULT EQUAL 0) + message(WARNING "Failed to apply stb_image.h compiler fix patch! This might be okay if it's already applied.") + endif() +else() + message(WARNING "Could not find stb_image.h to patch. It may not have been downloaded yet.") +endif() + if (ENABLE_QT) if (NOT USE_SYSTEM_QT) download_qt(6.7.3) From 791718ea7fa1c8b8d44bb66684bf5687e5f4b85a Mon Sep 17 00:00:00 2001 From: collecting Date: Tue, 7 Oct 2025 05:10:41 +0000 Subject: [PATCH 3/3] fix: string for Citron compilation error --- src/core/frontend/applets/software_keyboard.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/frontend/applets/software_keyboard.cpp b/src/core/frontend/applets/software_keyboard.cpp index 723c7aeb5..d0e3bd6c1 100644 --- a/src/core/frontend/applets/software_keyboard.cpp +++ b/src/core/frontend/applets/software_keyboard.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2025 citron Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #include @@ -65,7 +66,7 @@ void DefaultSoftwareKeyboardApplet::ShowNormalKeyboard() const { LOG_WARNING(Service_AM, "(STUBBED) called, backend requested to show the normal software keyboard."); - SubmitNormalText(u"citron"); + SubmitNormalText(std::u16string(u"citron", 6)); } void DefaultSoftwareKeyboardApplet::ShowTextCheckDialog(