1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

Ensure set_format_body macro only accepts properly sized arguments

This commit is contained in:
Michał Janiszewski
2017-02-16 16:50:35 +01:00
parent d40bbd7f5c
commit 2dcf33bd42
2 changed files with 5 additions and 3 deletions

View File

@@ -289,7 +289,7 @@ else ()
endif ()
# set necessary flags to compile code as is
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TARGET_M} -std=gnu99 ${COMMON_COMPILE_OPTIONS} -Wimplicit")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TARGET_M} -std=gnu11 ${COMMON_COMPILE_OPTIONS} -Wimplicit")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TARGET_M} -std=gnu++14 ${COMMON_COMPILE_OPTIONS} -Wnon-virtual-dtor")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${TARGET_M}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS} ${PIE_FLAG}")

View File

@@ -85,9 +85,11 @@ static inline void set_format_arg_body(uint8 *args, size_t offset, uintptr_t val
}
#define set_format_arg(offset, type, value) \
set_format_arg_body(gCommonFormatArgs, offset, (uintptr_t)value, sizeof(type))
do { static_assert(sizeof(type) <= sizeof(uintptr_t), "Type too large"); \
set_format_arg_body(gCommonFormatArgs, offset, (uintptr_t)value, sizeof(type)); } while (0)
#define set_map_tooltip_format_arg(offset, type, value) \
set_format_arg_body(gMapTooltipFormatArgs, offset, (uintptr_t)value, sizeof(type))
do { static_assert(sizeof(type) <= sizeof(uintptr_t), "Type too large"); \
set_format_arg_body(gMapTooltipFormatArgs, offset, (uintptr_t)value, sizeof(type)); } while (0)
#endif