Silence memset warning. (#3505)
Compiling the code as-is results in the following warning:
-->8--
imgui_freetype.cpp:341:72: warning: ‘void* memset(void*, int, size_t)’
clearing an object of type ‘struct ImFontBuildSrcDataFT’ with no
trivial copy-assignment; use assignment or value-initialization
instead [-Wclass-memaccess]
341 | memset(src_tmp_array.Data, 0, (size_t)src_tmp_array.size_in_bytes());
| ^
imgui_freetype.cpp:302:8: note: ‘struct ImFontBuildSrcDataFT’ declared here
302 | struct ImFontBuildSrcDataFT
| ^~~~~~~~~~~~~~~~~~~~
--8<--
This is caused by presence of ImVector<> directly in ImFontBuildSrcDataFT data
structure, as well as in the child ImBitVector. Since ImVector<> has a
constructor, the compiler infers that initialization by memset is not valid.
Such initialization is not a bug, however, as the default ImVector<> ctor just
sets the structure data members to 0, which is exactly what the memset does.
Casting the data structure address to void* pointer silences this warning.
1 file changed