diff options
author | 2020-04-08 16:31:48 -0400 | |
---|---|---|
committer | 2020-04-08 17:01:27 -0400 | |
commit | 0353d2ab83670f5329c2785ad3c43c4df48ad4c2 (patch) | |
tree | 336cd4b97d0738c9488a51fe86b2772fb287dc5f /dev-libs/libfmt/files | |
parent | sys-apps/man-pages: drop 'nls' USE flag (diff) | |
download | gentoo-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.patch | 46 |
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; |