This revision was automatically updated to reflect the committed changes.
Closed by commit rL245610: Inline fake snprintf to avoid linkage issues on
Windows. (authored by chaoren).
Changed prior to commit:
http://reviews.llvm.org/D12206?vs=32722id=32740#toc
Repository:
rL LLVM
http://reviews.llvm.org/D12206
Files:
lldb/trunk/include/lldb/Host/windows/win32.h
lldb/trunk/source/Host/windows/Windows.cpp
Index: lldb/trunk/source/Host/windows/Windows.cpp
===
--- lldb/trunk/source/Host/windows/Windows.cpp
+++ lldb/trunk/source/Host/windows/Windows.cpp
@@ -203,18 +203,17 @@
}
#if _MSC_VER 1900
-int snprintf(char *buffer, size_t count, const char *format, ...)
+namespace lldb_private {
+int vsnprintf(char *buffer, size_t count, const char *format, va_list argptr)
{
int old_errno = errno;
-va_list argptr;
-va_start(argptr, format);
-int r = vsnprintf(buffer, count, format, argptr);
+int r = ::vsnprintf(buffer, count, format, argptr);
int new_errno = errno;
buffer[count-1] = '\0';
if (r == -1 || r == count)
{
FILE *nul = fopen(nul, w);
-int bytes_written = vfprintf(nul, format, argptr);
+int bytes_written = ::vfprintf(nul, format, argptr);
fclose(nul);
if (bytes_written count)
errno = new_errno;
@@ -224,9 +223,9 @@
r = bytes_written;
}
}
-va_end(argptr);
return r;
}
+} // namespace lldb_private
#endif
#endif // _MSC_VER
Index: lldb/trunk/include/lldb/Host/windows/win32.h
===
--- lldb/trunk/include/lldb/Host/windows/win32.h
+++ lldb/trunk/include/lldb/Host/windows/win32.h
@@ -65,8 +65,19 @@
int strncasecmp(const char* s1, const char* s2, size_t n);
#if _MSC_VER 1900
-int __declspec(dllexport)
-snprintf(char *buffer, size_t count, const char *format, ...);
+namespace lldb_private {
+int vsnprintf(char *buffer, size_t count, const char *format, va_list argptr);
+}
+
+// inline to avoid linkage conflicts
+int inline snprintf(char *buffer, size_t count, const char *format, ...)
+{
+va_list argptr;
+va_start(argptr, format);
+int r = lldb_private::vsnprintf(buffer, count, format, argptr);
+va_end(argptr);
+return r;
+}
#endif
#define STDIN_FILENO 0
Index: lldb/trunk/source/Host/windows/Windows.cpp
===
--- lldb/trunk/source/Host/windows/Windows.cpp
+++ lldb/trunk/source/Host/windows/Windows.cpp
@@ -203,18 +203,17 @@
}
#if _MSC_VER 1900
-int snprintf(char *buffer, size_t count, const char *format, ...)
+namespace lldb_private {
+int vsnprintf(char *buffer, size_t count, const char *format, va_list argptr)
{
int old_errno = errno;
-va_list argptr;
-va_start(argptr, format);
-int r = vsnprintf(buffer, count, format, argptr);
+int r = ::vsnprintf(buffer, count, format, argptr);
int new_errno = errno;
buffer[count-1] = '\0';
if (r == -1 || r == count)
{
FILE *nul = fopen(nul, w);
-int bytes_written = vfprintf(nul, format, argptr);
+int bytes_written = ::vfprintf(nul, format, argptr);
fclose(nul);
if (bytes_written count)
errno = new_errno;
@@ -224,9 +223,9 @@
r = bytes_written;
}
}
-va_end(argptr);
return r;
}
+} // namespace lldb_private
#endif
#endif // _MSC_VER
Index: lldb/trunk/include/lldb/Host/windows/win32.h
===
--- lldb/trunk/include/lldb/Host/windows/win32.h
+++ lldb/trunk/include/lldb/Host/windows/win32.h
@@ -65,8 +65,19 @@
int strncasecmp(const char* s1, const char* s2, size_t n);
#if _MSC_VER 1900
-int __declspec(dllexport)
-snprintf(char *buffer, size_t count, const char *format, ...);
+namespace lldb_private {
+int vsnprintf(char *buffer, size_t count, const char *format, va_list argptr);
+}
+
+// inline to avoid linkage conflicts
+int inline snprintf(char *buffer, size_t count, const char *format, ...)
+{
+va_list argptr;
+va_start(argptr, format);
+int r = lldb_private::vsnprintf(buffer, count, format, argptr);
+va_end(argptr);
+return r;
+}
#endif
#define STDIN_FILENO 0
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits