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
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