From 586a3fbe2a985e8eaf8e54c5b80731a22af49ae1 Mon Sep 17 00:00:00 2001 From: Derek Mauro Date: Sat, 14 Feb 2026 16:53:21 -0800 Subject: [PATCH] Deprecate the versions of Base64Escape() and WebSafeBase64Escape() that use an output parameter. These versions are clearly inferior to the versions that return a string. This is a response to https://github.com/abseil/abseil-cpp/issues/2015 Fixes #2015 PiperOrigin-RevId: 870281461 Change-Id: I92f23d51d05a243dde88c997c1e8448819c5bc77 --- absl/strings/escaping.cc | 13 ------------- absl/strings/escaping.h | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/absl/strings/escaping.cc b/absl/strings/escaping.cc index 9f887b8e..1171e8d7 100644 --- a/absl/strings/escaping.cc +++ b/absl/strings/escaping.cc @@ -954,19 +954,6 @@ bool WebSafeBase64Unescape(absl::string_view src, return Base64UnescapeInternal(src.data(), src.size(), dest, kUnWebSafeBase64); } -void Base64Escape(absl::string_view src, std::string* absl_nonnull dest) { - strings_internal::Base64EscapeInternal( - reinterpret_cast(src.data()), src.size(), dest, - true, strings_internal::kBase64Chars); -} - -void WebSafeBase64Escape(absl::string_view src, - std::string* absl_nonnull dest) { - strings_internal::Base64EscapeInternal( - reinterpret_cast(src.data()), src.size(), dest, - false, strings_internal::kWebSafeBase64Chars); -} - std::string Base64Escape(absl::string_view src) { std::string dest; strings_internal::Base64EscapeInternal( diff --git a/absl/strings/escaping.h b/absl/strings/escaping.h index 3aaf39ca..aaacc289 100644 --- a/absl/strings/escaping.h +++ b/absl/strings/escaping.h @@ -126,16 +126,26 @@ std::string Utf8SafeCHexEscape(absl::string_view src); // Encodes a `src` string into a base64-encoded 'dest' string with padding // characters. This function conforms with RFC 4648 section 4 (base64) and RFC // 2045. -void Base64Escape(absl::string_view src, std::string* absl_nonnull dest); std::string Base64Escape(absl::string_view src); +[[deprecated( + "Use the string-returning version of " + "Base64Escape()")]] ABSL_REFACTOR_INLINE inline void +Base64Escape(absl::string_view src, std::string* absl_nonnull dest) { + *dest = Base64Escape(src); +} // WebSafeBase64Escape() // // Encodes a `src` string into a base64 string, like Base64Escape() does, but // outputs '-' instead of '+' and '_' instead of '/', and does not pad 'dest'. // This function conforms with RFC 4648 section 5 (base64url). -void WebSafeBase64Escape(absl::string_view src, std::string* absl_nonnull dest); std::string WebSafeBase64Escape(absl::string_view src); +[[deprecated( + "Use the string-returning version of " + "WebSafeBase64Escape()")]] ABSL_REFACTOR_INLINE inline void +WebSafeBase64Escape(absl::string_view src, std::string* absl_nonnull dest) { + *dest = WebSafeBase64Escape(src); +} // Base64Unescape() //