mirror of
https://git.citron-emu.org/citron/emulator
synced 2025-12-19 10:43:33 +00:00
Merge branch 'error_warning_fixes' into 'main'
fix: Resolve critical memory-safety compiler warnings See merge request citron/emulator!89
This commit is contained in:
@@ -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)
|
||||
|
||||
22
patches/stb_image-overflow-fix.patch
Normal file
22
patches/stb_image-overflow-fix.patch
Normal file
@@ -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;
|
||||
@@ -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 <thread>
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user