summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Andrews <candrews@gentoo.org>2020-04-08 16:31:48 -0400
committerCraig Andrews <candrews@gentoo.org>2020-04-08 17:01:27 -0400
commit0353d2ab83670f5329c2785ad3c43c4df48ad4c2 (patch)
tree336cd4b97d0738c9488a51fe86b2772fb287dc5f /dev-libs/libfmt/files
parentsys-apps/man-pages: drop 'nls' USE flag (diff)
downloadgentoo-0353d2ab83670f5329c2785ad3c43c4df48ad4c2.tar.gz
gentoo-0353d2ab83670f5329c2785ad3c43c4df48ad4c2.tar.bz2
gentoo-0353d2ab83670f5329c2785ad3c43c4df48ad4c2.zip
dev-libs/libfmt: Fix handling of unsigned char strings in printf
See: https://github.com/fmtlib/fmt/issues/1620 Package-Manager: Portage-2.3.97, Repoman-2.3.22 Signed-off-by: Craig Andrews <candrews@gentoo.org>
Diffstat (limited to 'dev-libs/libfmt/files')
-rw-r--r--dev-libs/libfmt/files/libfmt-6.2.0-unsigned-char-strings-in-printf.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/dev-libs/libfmt/files/libfmt-6.2.0-unsigned-char-strings-in-printf.patch b/dev-libs/libfmt/files/libfmt-6.2.0-unsigned-char-strings-in-printf.patch
new file mode 100644
index 000000000000..2ce27c83e622
--- /dev/null
+++ b/dev-libs/libfmt/files/libfmt-6.2.0-unsigned-char-strings-in-printf.patch
@@ -0,0 +1,46 @@
+From 7d01859ef16e6b65bc023ad8bebfedecb088bf81 Mon Sep 17 00:00:00 2001
+From: Victor Zverovich <viz@fb.com>
+Date: Wed, 8 Apr 2020 12:32:34 -0700
+Subject: [PATCH] Fix handling of unsigned char strings in printf
+
+---
+ include/fmt/core.h | 8 ++++++++
+ test/printf-test.cc | 6 ++++++
+ 2 files changed, 14 insertions(+)
+
+diff --git a/include/fmt/core.h b/include/fmt/core.h
+index 6df2875ac..dc10722bf 100644
+--- a/include/fmt/core.h
++++ b/include/fmt/core.h
+@@ -972,6 +972,14 @@ template <typename Context> struct arg_mapper {
+ static_assert(std::is_same<char_type, char>::value, "invalid string type");
+ return reinterpret_cast<const char*>(val);
+ }
++ FMT_CONSTEXPR const char* map(signed char* val) {
++ const auto* const_val = val;
++ return map(const_val);
++ }
++ FMT_CONSTEXPR const char* map(unsigned char* val) {
++ const auto* const_val = val;
++ return map(const_val);
++ }
+
+ FMT_CONSTEXPR const void* map(void* val) { return val; }
+ FMT_CONSTEXPR const void* map(const void* val) { return val; }
+diff --git a/test/printf-test.cc b/test/printf-test.cc
+index 5aaa27b13..545e02aab 100644
+--- a/test/printf-test.cc
++++ b/test/printf-test.cc
+@@ -447,6 +447,12 @@ TEST(PrintfTest, String) {
+ EXPECT_PRINTF(L" (null)", L"%10s", null_wstr);
+ }
+
++TEST(PrintfTest, UCharString) {
++ unsigned char str[] = "test";
++ unsigned char* pstr = str;
++ EXPECT_EQ("test", fmt::sprintf("%s", pstr));
++}
++
+ TEST(PrintfTest, Pointer) {
+ int n;
+ void* p = &n;