From 85a7702b4cc5d69402791fe685f151cf3076be71 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Wed, 16 May 2018 22:40:12 +0000 Subject: [PATCH] Condition usage of locale stdlib functions on Android API version Some *_l functions were not available in some versions of Bionic. This CL checks that the NDK version supports the functions, and if not, falls back on the corresponding functions that don't take a locale. Patch by Tom Anderson! Differential Revision: https://reviews.llvm.org/D46558 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@332543 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/support/android/locale_bionic.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/include/support/android/locale_bionic.h b/include/support/android/locale_bionic.h index 796b8d827..d638757fd 100644 --- a/include/support/android/locale_bionic.h +++ b/include/support/android/locale_bionic.h @@ -27,14 +27,14 @@ extern "C" { #if defined(__ANDROID__) #include - -// Android gained most locale aware functions in L (API level 21) -#if __ANDROID_API__ < 21 +#include #include -#endif - -// The strto* family was added in O (API Level 26) -#if __ANDROID_API__ < 26 +// In NDK versions later than 16, locale-aware functions are provided by +// legacy_stdlib_inlines.h +#if __NDK_MAJOR__ <= 16 +#if __ANDROID_API__ < 21 +#include +#elif __ANDROID_API__ < 26 #if defined(__cplusplus) extern "C" { @@ -61,6 +61,7 @@ inline _LIBCPP_ALWAYS_INLINE long strtol_l(const char* __nptr, char** __endptr, #endif // __ANDROID_API__ < 26 +#endif // __NDK_MAJOR__ <= 16 #endif // defined(__ANDROID__) #endif // defined(__BIONIC__)