-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: 消除部分编译器警告 #258
chore: 消除部分编译器警告 #258
Conversation
WalkthroughThis pull request introduces several modifications that enhance type safety, secure string handling, and error signaling. In the Changes
Poem
Tip 🌐 Web search-backed reviews and chat
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (12)
🚧 Files skipped from review as they are similar to previous changes (5)
🧰 Additional context used🪛 Cppcheck (2.10-2)src/egecontrolbase.cpp[performance] 16-16: Variable 'm_target' is assigned in constructor body. Consider performing initialization in initialization list. (useInitializationList) src/font.cpp[error] 344-344: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 345-345: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 346-346: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 347-347: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 348-348: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 349-349: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 350-350: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 351-351: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 364-364: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 365-365: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 366-366: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 367-367: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 368-368: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) [error] 369-369: Signed integer overflow for expression '0xFF<<24'. (integerOverflow) ⏰ Context from checks skipped due to timeout of 90000ms (1)
🔇 Additional comments (10)
✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
src/egecontrolbase.cpp (1)
14-16
: Suppress Compiler Warnings Directive AddedThe new preprocessor block:
#ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endifhas been introduced to suppress warnings related to potentially unsafe C-runtime functions. This aligns with the similar directive added in
ege_head.h
and directly addresses the compiler warnings targeted in the PR objective.Please ensure that this suppression is an intentional decision rather than a permanent workaround. It may be beneficial to audit the usage of functions that trigger these warnings to confirm that they do not introduce security or safety issues in the long run.
🧰 Tools
🪛 Cppcheck (2.10-2)
[performance] 16-16: Variable 'm_target' is assigned in constructor body. Consider performing initialization in initialization list.
(useInitializationList)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
include/ege/button.h
(4 hunks)src/ege_dllimport.cpp
(4 hunks)src/ege_head.h
(1 hunks)src/egecontrolbase.cpp
(1 hunks)src/egegapi.cpp
(2 hunks)src/font.cpp
(6 hunks)src/image.cpp
(1 hunks)src/time.cpp
(1 hunks)
✅ Files skipped from review due to trivial changes (2)
- src/ege_head.h
- src/egegapi.cpp
🧰 Additional context used
🪛 Cppcheck (2.10-2)
src/font.cpp
[error] 344-344: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 345-345: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 346-346: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 347-347: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 348-348: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 349-349: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 350-350: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 351-351: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 364-364: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 365-365: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 366-366: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 367-367: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 368-368: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 369-369: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
src/egecontrolbase.cpp
[performance] 16-16: Variable 'm_target' is assigned in constructor body. Consider performing initialization in initialization list.
(useInitializationList)
🔇 Additional comments (17)
src/time.cpp (1)
92-92
: LGTM! Improved type safety with explicit cast.The explicit cast to
long
for the sleep duration eliminates potential precision loss warnings from implicit conversion.include/ege/button.h (4)
116-121
: LGTM! Using safer string handling function.Using
strcpy_s
when available improves buffer overflow protection.
246-251
: LGTM! Using safer string handling function.Using
strcpy_s
when available improves buffer overflow protection.
262-267
: LGTM! Using safer string handling function.Using
strcpy_s
when available improves buffer overflow protection.
318-318
: LGTM! Improved type safety with explicit cast.The explicit cast to
int
prevents potential precision loss warnings from the floating-point calculation.src/ege_dllimport.cpp (5)
187-187
: LGTM! Improved error handling with specific error code.Using
MMSYSERR_NOTSUPPORTED
instead ofNULL
provides a more meaningful error code.
195-195
: LGTM! Improved error handling with specific error code.Using
MMSYSERR_NOTSUPPORTED
instead ofNULL
provides a more meaningful error code.
204-204
: LGTM! Improved error handling with specific error code.Using
MMSYSERR_NOTSUPPORTED
instead ofNULL
provides a more meaningful error code.
213-213
: LGTM! Improved error handling with specific error code.Using
MMSYSERR_NOTSUPPORTED
instead ofNULL
provides a more meaningful error code.
222-222
: LGTM! Improved error handling with specific error code.Using
MMSYSERR_ERROR
instead ofNULL
provides a more meaningful error code.src/font.cpp (6)
187-192
: LGTM! Using safer string formatting function.Using
vsprintf_s
with proper buffer size calculation improves buffer overflow protection.
206-211
: LGTM! Using safer string formatting function.Using
vswprintf_s
with proper buffer size calculation improves buffer overflow protection.
224-229
: LGTM! Using safer string formatting function.Using
vsprintf_s
with proper buffer size calculation improves buffer overflow protection.
242-247
: LGTM! Using safer string formatting function.Using
vswprintf_s
with proper buffer size calculation improves buffer overflow protection.
344-351
: LGTM! Improved buffer management.Writing to the middle of the buffer helps avoid potential overlap issues when the buffer is used concurrently.
🧰 Tools
🪛 Cppcheck (2.10-2)
[error] 344-344: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 345-345: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 346-346: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 347-347: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 348-348: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 349-349: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 350-350: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 351-351: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
364-369
: LGTM! Using safer string formatting function.Using
vswprintf_s
with proper buffer size calculation improves buffer overflow protection.🧰 Tools
🪛 Cppcheck (2.10-2)
[error] 364-364: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 365-365: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 366-366: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 367-367: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 368-368: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 369-369: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
src/image.cpp (1)
3280-3284
: LGTM! Proper use of unsigned integer suffixes.The addition of 'U' suffixes to hexadecimal constants is correct and helps eliminate potential compiler warnings about integer constant size/sign conversions. The values remain unchanged:
0x00FF0000U
for red mask0x0000FF00U
for green mask0x000000FFU
for blue mask0xFF000000U
for alpha mask0x73524742U
for sRGB color space
76c15f5
to
cfa394f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (5)
src/font.cpp (5)
187-192
: LGTM! Consider adding buffer size check for non-MSVC builds.The use of
vsprintf_s
with proper buffer size calculation is a good improvement for MSVC builds. However, the non-MSVC path still uses unsafevsprintf
.Consider adding a manual buffer size check for non-MSVC builds:
#if defined(_MSC_VER) && (_MSC_VER >= 1400) size_t bufferCount = sizeof(pg->g_t_buff); vsprintf_s(buff, bufferCount, format, v); #else - vsprintf(buff, format, v); + size_t bufferCount = sizeof(pg->g_t_buff); + if (vsnprintf(buff, bufferCount, format, v) >= bufferCount) { + // Handle buffer overflow + } #endif
206-211
: LGTM! Consider adding buffer size check for non-MSVC builds.The use of
vswprintf_s
with proper buffer size calculation is a good improvement for MSVC builds. However, the non-MSVC path still uses unsafevswprintf
.Consider adding a manual buffer size check for non-MSVC builds:
#if defined(_MSC_VER) && (_MSC_VER >= 1400) size_t bufferCount = sizeof(pg->g_t_buff) / sizeof(wchar_t); vswprintf_s(buff, bufferCount, format, v); #else - vswprintf(buff, format, v); + size_t bufferCount = sizeof(pg->g_t_buff) / sizeof(wchar_t); + if (vswprintf(buff, bufferCount, format, v) >= bufferCount) { + // Handle buffer overflow + } #endif
224-229
: LGTM! Consider adding buffer size check for non-MSVC builds.The use of
vsprintf_s
with proper buffer size calculation is a good improvement for MSVC builds. However, the non-MSVC path still uses unsafevsprintf
.Consider adding a manual buffer size check for non-MSVC builds:
#if defined(_MSC_VER) && (_MSC_VER >= 1400) size_t bufferCount = sizeof(pg->g_t_buff); vsprintf_s(buff, bufferCount, format, v); #else - vsprintf(buff, format, v); + size_t bufferCount = sizeof(pg->g_t_buff); + if (vsnprintf(buff, bufferCount, format, v) >= bufferCount) { + // Handle buffer overflow + } #endif
242-247
: LGTM! Consider adding buffer size check for non-MSVC builds.The use of
vswprintf_s
with proper buffer size calculation is a good improvement for MSVC builds. However, the non-MSVC path still uses unsafevswprintf
.Consider adding a manual buffer size check for non-MSVC builds:
#if defined(_MSC_VER) && (_MSC_VER >= 1400) size_t bufferCount = sizeof(pg->g_t_buff) / sizeof(wchar_t); vswprintf_s(buff, bufferCount, format, v); #else - vswprintf(buff, format, v); + size_t bufferCount = sizeof(pg->g_t_buff) / sizeof(wchar_t); + if (vswprintf(buff, bufferCount, format, v) >= bufferCount) { + // Handle buffer overflow + } #endif
344-351
: LGTM! Consider adding buffer size check for non-MSVC builds.The buffer length calculation and writing from the middle of the buffer is a good approach to avoid overlap. The use of
vsprintf_s
with proper buffer size calculation is also a good improvement for MSVC builds. However, the non-MSVC path still uses unsafevsprintf
.Consider adding a manual buffer size check for non-MSVC builds:
const int bufferLength = sizeof(pg->g_t_buff) / sizeof(pg->g_t_buff[0]); char* buff = (char*)(pg->g_t_buff + bufferLength / 2); #if defined(_MSC_VER) && (_MSC_VER >= 1400) size_t bufferCount = sizeof(pg->g_t_buff) / 2; vsprintf_s(buff, bufferCount, format, v); #else - vsprintf(buff, format, v); + size_t bufferCount = sizeof(pg->g_t_buff) / 2; + if (vsnprintf(buff, bufferCount, format, v) >= bufferCount) { + // Handle buffer overflow + } #endif🧰 Tools
🪛 Cppcheck (2.10-2)
[error] 344-344: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 345-345: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 346-346: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 347-347: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 348-348: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 349-349: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 350-350: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 351-351: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
include/ege/button.h
(4 hunks)src/ege_dllimport.cpp
(4 hunks)src/ege_head.h
(1 hunks)src/egecontrolbase.cpp
(1 hunks)src/egegapi.cpp
(2 hunks)src/font.cpp
(6 hunks)src/image.cpp
(3 hunks)src/time.cpp
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (5)
- src/ege_head.h
- src/time.cpp
- include/ege/button.h
- src/ege_dllimport.cpp
- src/egegapi.cpp
🧰 Additional context used
🪛 Cppcheck (2.10-2)
src/font.cpp
[error] 344-344: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 345-345: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 346-346: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 347-347: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 348-348: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 349-349: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 350-350: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 351-351: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 364-364: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 365-365: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 366-366: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 367-367: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 368-368: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
[error] 369-369: Signed integer overflow for expression '0xFF<<24'.
(integerOverflow)
src/egecontrolbase.cpp
[performance] 16-16: Variable 'm_target' is assigned in constructor body. Consider performing initialization in initialization list.
(useInitializationList)
🔇 Additional comments (4)
src/image.cpp (4)
713-714
: Improve precision by using round() for zoomed dimensions.The change from implicit conversion to explicit rounding using
round()
improves precision and eliminates potential compiler warnings about floating-point to integer conversions.
715-716
: Improve precision by using round() for center coordinates.Similar to the zoomed dimensions, using
round()
for center coordinates provides more accurate positioning and eliminates potential compiler warnings.
734-737
: Improve type safety by using explicit integer casts.The changes add explicit integer casts using
(int)
for source coordinates inputpixel_savealpha
calls, which improves type safety and eliminates compiler warnings about floating-point to integer conversions.
3280-3284
: Add explicit unsigned suffix for color masks.The addition of
U
suffix to hexadecimal color mask values improves type safety by explicitly marking them as unsigned integers, which eliminates potential compiler warnings about signed/unsigned mismatches.
cfa394f
to
e0178f5
Compare
消除部分类型转换、安全函数等相关编译器警告
Summary by CodeRabbit