looks good, can you add a comment to explain why it's inlined though. On Thu, Aug 20, 2015 at 12:14 PM Chaoren Lin <chaor...@google.com> wrote:
> chaoren created this revision. > chaoren added a reviewer: zturner. > chaoren added a subscriber: lldb-commits. > > dllexport doesn't work if linking against a static library with its own > copy of snprintf. > > http://reviews.llvm.org/D12206 > > Files: > include/lldb/Host/windows/win32.h > source/Host/windows/Windows.cpp > > Index: source/Host/windows/Windows.cpp > =================================================================== > --- source/Host/windows/Windows.cpp > +++ 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: include/lldb/Host/windows/win32.h > =================================================================== > --- include/lldb/Host/windows/win32.h > +++ include/lldb/Host/windows/win32.h > @@ -65,8 +65,18 @@ > 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); > +} > + > +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