[libc-commits] [libc] [libc] Add support for writing to wchar_t in printf_core/ converter functions. (PR #230246)

Michael Jones via libc-commits libc-commits at lists.llvm.org
Wed Oct 14 11:49:01 PDT 2026


================
@@ -181,13 +184,20 @@ convert_finite_float_hex_exp(Writer<mode> *writer,
 
   size_t mant_cur = mant_len;
   size_t first_non_zero = 1;
+  bool is_upper = internal::isupper(to_conv.conv_name);
   for (; mant_cur > 0; --mant_cur, fp_bits_properties.mantissa >>= 4) {
-    char mant_mod_16 = static_cast<char>(fp_bits_properties.mantissa % 16);
-    char new_digit = internal::int_to_b36_char(mant_mod_16);
-    if (internal::isupper(to_conv.conv_name))
+    int mant_mod_16 = static_cast<int>(fp_bits_properties.mantissa % 16);
+    CharT new_digit;
+    if constexpr (cpp::is_same_v<CharT, char>) {
+      new_digit = internal::int_to_b36_char(mant_mod_16);
+    } else {
+      static_assert(cpp::is_same_v<CharT, wchar_t>);
+      new_digit = internal::int_to_b36_wchar(mant_mod_16);
+    }
----------------
michaelrj-google wrote:

this should probably be guarded by `LIBC_COPT_PRINTF_DISABLE_WIDE`

https://github.com/llvm/llvm-project/pull/230246


More information about the libc-commits mailing list