[Lldb-commits] [PATCH] D12206: Inline fake snprintf to avoid linkage issues on Windows.

Chaoren Lin via lldb-commits lldb-commits at lists.llvm.org
Thu Aug 20 13:54:11 PDT 2015


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=32722&id=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


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D12206.32740.patch
Type: text/x-patch
Size: 1975 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20150820/b92923d7/attachment.bin>


More information about the lldb-commits mailing list