Skip to content

Commit f3940ad

Browse files
marler8997alexrp
authored andcommitted
windows: MSVC: disable extra dubious Microsoft runtime checks
Cmake by default adds the `/RTC1` compiler flag for debug builds. However, this causes C code that conforms to the C standard and has well-defined behavior to trap. Here I've updated CMAKE to use the more lenient `/RTCs` by default which removes the uninitialized variable checks but keeps the stack error checks.
1 parent 850655f commit f3940ad

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,12 @@ if(MSVC)
694694
set(ZIG_DIA_GUIDS_LIB "${MSVC_DIA_SDK_DIR}/lib/amd64/diaguids.lib")
695695
string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_DIA_GUIDS_LIB_ESCAPED "${ZIG_DIA_GUIDS_LIB}")
696696
endif()
697+
698+
# The /RTC[c][s][u] flag enables extra runtime checks. ("/RTC1" == "/RTCsu")
699+
# The "c" (PossibleDataLoss) and "u" (UninitializeVariable) flags trap on valid C code so we disable
700+
# them. The "s" flag seems like it might be OK.
701+
string(REPLACE "/RTC1" "/RTCs" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
702+
string(REPLACE "/RTC1" "/RTCs" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
697703
endif()
698704

699705
configure_file (

0 commit comments

Comments
 (0)