diff options
author | David Ostrovsky <david@ostrovsky.org> | 2015-07-02 08:06:07 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2015-09-02 20:40:21 +0000 |
commit | 0c9ddb24ee0388d03c313caf5a45f1aa26049781 (patch) | |
tree | e91e799f21aa940e80bf8f59733ec6f7e6efc37b | |
parent | doc para property ranges cannot be 0 length (diff) | |
download | core-0c9ddb24ee0388d03c313caf5a45f1aa26049781.tar.gz core-0c9ddb24ee0388d03c313caf5a45f1aa26049781.zip |
Don't redefine snprintf as VS 2015 supports ISO standard
Make the workaround in snprintf.h conditional on older MSVC version.
Investigation reveals that the GetShortPathNameW is presumably used by
legacy Duden extension that was built by Sun in a setsolar environment.
The uwinapi.lib was never part of the SDK, so ordinary extensions cannot
link against it. The PRIVATE export of the symbol that is only possible
with DEF file therefore does not matter much. With VC2015 there is no
need for LO code to use uwinapi.dll at all and gb_UWINAPI can be unset
in this case.
Change-Id: I23a5636db9431b0fa4350b665a6a69613d625264
Reviewed-on: https://gerrit.libreoffice.org/16677
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r-- | include/systools/win32/snprintf.h | 5 | ||||
-rw-r--r-- | sal/Library_uwinapi.mk | 3 | ||||
-rw-r--r-- | sal/systools/win32/uwinapi/sntprintf.c | 4 | ||||
-rw-r--r-- | solenv/gbuild/platform/windows.mk | 7 |
4 files changed, 18 insertions, 1 deletions
diff --git a/include/systools/win32/snprintf.h b/include/systools/win32/snprintf.h index 92e571f91ee8..62abfc8a11a6 100644 --- a/include/systools/win32/snprintf.h +++ b/include/systools/win32/snprintf.h @@ -69,6 +69,9 @@ extern "C" { #if !defined(__MINGW32__) || defined (__NO_ISOCEXT) +/* VS 2015 and above support ISO C snprintf */ +#if _MSC_VER < 1900 + /* UNICODE version */ _SNPRINTF_DLLIMPORT int __cdecl snwprintf( wchar_t *buffer, size_t count, const wchar_t *format, ... ); @@ -77,6 +80,8 @@ _SNPRINTF_DLLIMPORT int __cdecl snprintf( char *buffer, size_t count, const char #endif +#endif + /* Conflict with STL_port inline implementation */ #ifdef __cplusplus diff --git a/sal/Library_uwinapi.mk b/sal/Library_uwinapi.mk index 089ab59ee825..ed4efde10b6c 100644 --- a/sal/Library_uwinapi.mk +++ b/sal/Library_uwinapi.mk @@ -33,14 +33,15 @@ $(eval $(call gb_Library_add_cobjects,uwinapi,\ ifeq ($(COM),MSC) - $(eval $(call gb_Library_add_cobjects,uwinapi,\ sal/systools/win32/uwinapi/legacy \ )) +ifeq ($(VCVER),120) $(eval $(call gb_Library_add_ldflags,uwinapi,\ /DEF:$(SRCDIR)/sal/systools/win32/uwinapi/uwinapi.def \ )) +endif endif diff --git a/sal/systools/win32/uwinapi/sntprintf.c b/sal/systools/win32/uwinapi/sntprintf.c index 70980305c4ae..cbebed5e7ee6 100644 --- a/sal/systools/win32/uwinapi/sntprintf.c +++ b/sal/systools/win32/uwinapi/sntprintf.c @@ -90,6 +90,9 @@ static _TCHAR *GetLastBufferChar( _TCHAR *buffer, size_t count ) return last; } +/* VS 2015 and above support ISO C snprintf */ +#if _MSC_VER < 1900 + /* Implementation of snprintf following the ISO/IEC 9899:1999 (ISO C99) standard */ _SNPRINTF_DLLIMPORT int __cdecl vsntprintf( _TCHAR *buffer, size_t count, const _TCHAR *format, va_list list ) @@ -141,6 +144,7 @@ _SNPRINTF_DLLIMPORT int __cdecl sntprintf( _TCHAR *buffer, size_t count, const _ return retval; } +#endif #endif diff --git a/solenv/gbuild/platform/windows.mk b/solenv/gbuild/platform/windows.mk index ea0e476ec456..a2e621d67215 100644 --- a/solenv/gbuild/platform/windows.mk +++ b/solenv/gbuild/platform/windows.mk @@ -32,8 +32,15 @@ gb_OSDEFS := \ -DWNT \ -DNOMINMAX \ + +gb_UWINAPI := + +ifeq ($(VCVER),120) + gb_UWINAPI := uwinapi +endif + gb_Executable_LAYER := \ $(foreach exe,$(gb_Executable_UREBIN),$(exe):UREBIN) \ $(foreach exe,$(gb_Executable_SDK),$(exe):SDKBIN) \ |