Index: src/gpu/GrAutoLocaleSetter.h |
diff --git a/src/gpu/GrAutoLocaleSetter.h b/src/gpu/GrAutoLocaleSetter.h |
index 08196debf61ba30d9109add414e68253a732995f..6bfff0cd897b3b124f8c702a5f224d9c1aee6776 100644 |
--- a/src/gpu/GrAutoLocaleSetter.h |
+++ b/src/gpu/GrAutoLocaleSetter.h |
@@ -22,6 +22,12 @@ |
#include <xlocale.h> |
#endif |
+#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) |
+#define HAVE_LOCALE_T 0 |
+#else |
+#define HAVE_LOCALE_T 1 |
+#endif |
+ |
/** |
* Helper class for ensuring that we don't use the wrong locale when building shaders. Android |
* doesn't support locale in the NDK, so this is a no-op there. |
@@ -38,7 +44,7 @@ public: |
} else { |
fShouldRestoreLocale = false; |
} |
-#elif !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) |
+#elif HAVE_LOCALE_T |
fLocale = newlocale(LC_ALL, name, 0); |
if (fLocale) { |
fOldLocale = uselocale(fLocale); |
@@ -56,7 +62,7 @@ public: |
setlocale(LC_ALL, fOldLocale.c_str()); |
} |
_configthreadlocale(fOldPerThreadLocale); |
-#elif !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) |
+#elif HAVE_LOCALE_T |
if (fLocale) { |
uselocale(fOldLocale); |
freelocale(fLocale); |
@@ -69,11 +75,13 @@ private: |
int fOldPerThreadLocale; |
bool fShouldRestoreLocale; |
SkString fOldLocale; |
-#elif !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) |
+#elif HAVE_LOCALE_T |
locale_t fOldLocale; |
locale_t fLocale; |
#endif |
}; |
+#undef HAVE_LOCALE_T |
+ |
#endif |