[PATCH] D42405: libcxx: Rename vasprintf function to __libcpp_vasprintf.

Peter Collingbourne via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 22 18:56:49 PST 2018


pcc created this revision.
pcc added reviewers: compnerd, smeenai, EricWF, mclow.lists.

The language standard does not define a function with this name,
so it is part of the user's namespace. This change fixes a duplicate
symbol error that occurs when a user attempts to define a function
with this name.


https://reviews.llvm.org/D42405

Files:
  libcxx/include/stdio.h
  libcxx/src/support/win32/locale_win32.cpp
  libcxx/src/support/win32/support.cpp


Index: libcxx/src/support/win32/support.cpp
===================================================================
--- libcxx/src/support/win32/support.cpp
+++ libcxx/src/support/win32/support.cpp
@@ -19,7 +19,7 @@
 // Like sprintf, but when return value >= 0 it returns
 // a pointer to a malloc'd string in *sptr.
 // If return >= 0, use free to delete *sptr.
-int vasprintf( char **sptr, const char *__restrict format, va_list ap )
+int __libcpp_vasprintf( char **sptr, const char *__restrict format, va_list ap )
 {
     *sptr = NULL;
     // Query the count required.
Index: libcxx/src/support/win32/locale_win32.cpp
===================================================================
--- libcxx/src/support/win32/locale_win32.cpp
+++ libcxx/src/support/win32/locale_win32.cpp
@@ -13,6 +13,8 @@
 #include <memory>
 #include <type_traits>
 
+int __libcpp_vasprintf(char **sptr, const char *__restrict fmt, va_list ap);
+
 using std::__libcpp_locale_guard;
 
 // FIXME: base currently unused. Needs manual work to construct the new locale
@@ -105,7 +107,7 @@
 int vasprintf_l( char **ret, locale_t loc, const char *format, va_list ap )
 {
     __libcpp_locale_guard __current(loc);
-    return vasprintf( ret, format, ap );
+    return __libcpp_vasprintf( ret, format, ap );
 }
 
 #if !defined(_LIBCPP_MSVCRT)
Index: libcxx/include/stdio.h
===================================================================
--- libcxx/include/stdio.h
+++ libcxx/include/stdio.h
@@ -109,13 +109,6 @@
 
 #ifdef __cplusplus
 
-// snprintf
-#if defined(_LIBCPP_MSVCRT_LIKE)
-extern "C" {
-int vasprintf(char **sptr, const char *__restrict fmt, va_list ap);
-}
-#endif
-
 #undef getc
 #undef putc
 #undef clearerr


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42405.130998.patch
Type: text/x-patch
Size: 1693 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180123/23f9c720/attachment.bin>


More information about the llvm-commits mailing list