From f177431d912341c7ab1add73725c4bd751fcc22b Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Fri, 22 Apr 2022 10:56:39 -0700 Subject: [PATCH] [localization] catch localized string format errors --- src/vcpkg/base/messages.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/vcpkg/base/messages.cpp b/src/vcpkg/base/messages.cpp index 899e8d94d9..a805804033 100644 --- a/src/vcpkg/base/messages.cpp +++ b/src/vcpkg/base/messages.cpp @@ -297,6 +297,27 @@ namespace vcpkg::msg LocalizedString detail::internal_vformat(::size_t index, fmt::format_args args) { auto fmt_string = get_format_string(index); - return LocalizedString::from_raw(fmt::vformat({fmt_string.data(), fmt_string.size()}, args)); + try + { + return LocalizedString::from_raw(fmt::vformat({fmt_string.data(), fmt_string.size()}, args)); + } + catch (...) + { + auto default_format_string = get_default_format_string(index); + try + { + return LocalizedString::from_raw( + fmt::vformat({default_format_string.data(), default_format_string.size()}, args)); + } + catch (...) + { + ::fprintf(stderr, + "INTERNAL ERROR: failed to format default format string for index %zu\nformat string: %.*s\n", + index, + (int)default_format_string.size(), + default_format_string.data()); + Checks::exit_fail(VCPKG_LINE_INFO); + } + } } }