libcxx: Rename vasprintf function to __libcpp_vasprintf.

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.

Differential Revision: https://reviews.llvm.org/D42405

llvm-svn: 323237
This commit is contained in:
Peter Collingbourne 2018-01-23 18:53:33 +00:00
parent 1e49137d34
commit 2f97aab6ea
3 changed files with 4 additions and 9 deletions

View File

@ -109,13 +109,6 @@ void perror(const char* s);
#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

View File

@ -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 asprintf_l( char **ret, locale_t loc, const char *format, ... )
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)

View File

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