Skip to content

Commit c691c6b

Browse files
committed
Work around 'unreferenced function' warnings in NO_STL builds
Normally, as_utf8_begin et al are used in STL functions but when STL is disabled, these are only used if the target platform lacks first class support for wchar_t FILE* APIs. With some warning levels we consequently can get warnings about these functions not being referenced. Not defining these in the first place is difficult because of the complexity of the selection logic for open_file_wide so for now just mark these as unused. The strange (void)& syntax is needed for MSVC to not trigger another warning... The workaround is narrowly scoped to avoid unforeseen compatibility issues. Fixes #619.
1 parent ac0ef85 commit c691c6b

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

src/pugixml.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5054,6 +5054,14 @@ PUGI_IMPL_NS_BEGIN
50545054
#if defined(PUGI_IMPL_MSVC_CRT_VERSION) || defined(__BORLANDC__) || (defined(__MINGW32__) && (!defined(__STRICT_ANSI__) || defined(__MINGW64_VERSION_MAJOR)))
50555055
PUGI_IMPL_FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode)
50565056
{
5057+
#ifdef PUGIXML_NO_STL
5058+
// ensure these symbols are consistently referenced to avoid 'unreferenced function' warnings
5059+
// note that generally these functions are used in STL builds, but PUGIXML_NO_STL leaves the only usage in convert_path_heap
5060+
(void)&as_utf8_begin;
5061+
(void)&as_utf8_end;
5062+
(void)&strlength_wide;
5063+
#endif
5064+
50575065
#if defined(PUGI_IMPL_MSVC_CRT_VERSION) && PUGI_IMPL_MSVC_CRT_VERSION >= 1400
50585066
FILE* file = NULL;
50595067
return _wfopen_s(&file, path, mode) == 0 ? file : NULL;

0 commit comments

Comments
 (0)