Compare commits

..

4 Commits

Author SHA1 Message Date
BLUELOVETH
24fdd20eec
Merge pull request #318 from trim21/ub
avoid undefined behavior signed int overflow
2024-12-25 12:25:15 +08:00
BLUELOVETH
93d7a31bda
Merge pull request #317 from trim21/win32-clang
fix win32 clang build
2024-12-25 11:42:13 +08:00
Trim21
28cdde503b
avoid undefined behavior signed int overflow 2024-12-25 05:04:11 +08:00
Trim21
c1461d009a
fix win32 clang build 2024-12-25 04:12:55 +08:00
3 changed files with 12 additions and 8 deletions

View File

@ -16,10 +16,13 @@ else()
message(WARNING ">> IPO disabled. You will not get the best performance.") message(WARNING ">> IPO disabled. You will not get the best performance.")
endif() endif()
if(WIN32)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif()
if(MSVC) if(MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8 /jumptablerdata /GS-") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8 /jumptablerdata /GS-")
add_compile_options(/wd4267 /wd4244) add_compile_options(/wd4267 /wd4244)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Ox") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Ox")
@ -54,7 +57,7 @@ endif()
# PK_IS_MAIN determines whether the project is being used from root # PK_IS_MAIN determines whether the project is being used from root
# or if it is added as a dependency (through add_subdirectory for example). # or if it is added as a dependency (through add_subdirectory for example).
if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}") if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
set(PK_IS_MAIN TRUE) set(PK_IS_MAIN TRUE)
option(PK_BUILD_SHARED_LIB "Build shared library" OFF) option(PK_BUILD_SHARED_LIB "Build shared library" OFF)
option(PK_BUILD_STATIC_LIB "Build static library" OFF) option(PK_BUILD_STATIC_LIB "Build static library" OFF)

View File

@ -8,6 +8,7 @@
#if PY_SYS_PLATFORM == 0 #if PY_SYS_PLATFORM == 0
#include <direct.h> #include <direct.h>
#include <io.h>
int platform_chdir(const char* path) { return _chdir(path); } int platform_chdir(const char* path) { return _chdir(path); }

View File

@ -80,13 +80,13 @@ static void pkl__emit_int(PickleObject* buf, py_i64 val) {
pkl__emit_op(buf, PKL_INT_0 + val); pkl__emit_op(buf, PKL_INT_0 + val);
return; return;
} }
if((int8_t)val == val) { if(INT8_MIN <= val && val <= INT8_MAX) {
pkl__emit_op(buf, PKL_INT8); pkl__emit_op(buf, PKL_INT8);
PickleObject__write_bytes(buf, &val, 1); PickleObject__write_bytes(buf, &val, 1);
} else if((int16_t)val == val) { } else if(INT16_MIN <= val && val <= INT16_MAX) {
pkl__emit_op(buf, PKL_INT16); pkl__emit_op(buf, PKL_INT16);
PickleObject__write_bytes(buf, &val, 2); PickleObject__write_bytes(buf, &val, 2);
} else if((int32_t)val == val) { } else if(INT32_MIN <= val && val <= INT32_MAX) {
pkl__emit_op(buf, PKL_INT32); pkl__emit_op(buf, PKL_INT32);
PickleObject__write_bytes(buf, &val, 4); PickleObject__write_bytes(buf, &val, 4);
} else { } else {