1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
From 37a8c7818c4407b6d56ffe14f6f12c53b559f18b Mon Sep 17 00:00:00 2001
From: q66 <q66@chimera-linux.org>
Date: Sun, 14 Apr 2024 14:45:36 +0200
Subject: [PATCH 13/30] libc++: musl locale workarounds
---
libcxx/include/locale | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/libcxx/include/locale b/libcxx/include/locale
index 573910a85..7d610b584 100644
--- a/libcxx/include/locale
+++ b/libcxx/include/locale
@@ -727,7 +727,11 @@ __num_get_signed_integral(const char* __a, const char* __a_end, ios_base::iostat
__libcpp_remove_reference_t<decltype(errno)> __save_errno = errno;
errno = 0;
char* __p2;
+#if defined(__linux__) && !defined(__GLIBC__)
+ long long __ll = strtoll(__a, &__p2, __base);
+#else
long long __ll = strtoll_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE);
+#endif
__libcpp_remove_reference_t<decltype(errno)> __current_errno = errno;
if (__current_errno == 0)
errno = __save_errno;
@@ -759,7 +763,11 @@ __num_get_unsigned_integral(const char* __a, const char* __a_end, ios_base::iost
__libcpp_remove_reference_t<decltype(errno)> __save_errno = errno;
errno = 0;
char* __p2;
+#if defined(__linux__) && !defined(__GLIBC__)
+ unsigned long long __ll = strtoull(__a, &__p2, __base);
+#else
unsigned long long __ll = strtoull_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE);
+#endif
__libcpp_remove_reference_t<decltype(errno)> __current_errno = errno;
if (__current_errno == 0)
errno = __save_errno;
--
2.47.0
|