summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Ostrovsky <david@ostrovsky.org>2015-07-02 08:06:07 +0200
committerMichael Stahl <mstahl@redhat.com>2015-09-02 20:40:21 +0000
commit0c9ddb24ee0388d03c313caf5a45f1aa26049781 (patch)
treee91e799f21aa940e80bf8f59733ec6f7e6efc37b
parentdoc para property ranges cannot be 0 length (diff)
downloadcore-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.h5
-rw-r--r--sal/Library_uwinapi.mk3
-rw-r--r--sal/systools/win32/uwinapi/sntprintf.c4
-rw-r--r--solenv/gbuild/platform/windows.mk7
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) \