From f8000e293141a9af9f51effc76007aab21b0dede Mon Sep 17 00:00:00 2001 From: Joao Fernandes Date: Fri, 24 Sep 2021 16:13:40 +0100 Subject: [PATCH] [ruby/base64] Avoid unnecessary string duplication String#ljust returns a new string, so whenever we need to add padding, we can replace "-/" in place with String#tr! and avoid creating yet another copy of the string. https://github.com/ruby/base64/commit/6401ef5824 --- lib/base64.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/base64.rb b/lib/base64.rb index de1e8c0e55..693aa1f519 100644 --- a/lib/base64.rb +++ b/lib/base64.rb @@ -99,9 +99,11 @@ module Base64 # NOTE: RFC 4648 does say nothing about unpadded input, but says that # "the excess pad characters MAY also be ignored", so it is inferred that # unpadded input is also acceptable. - str = str.tr("-_", "+/") if !str.end_with?("=") && str.length % 4 != 0 str = str.ljust((str.length + 3) & ~3, "=") + str.tr!("-_", "+/") + else + str = str.tr("-_", "+/") end strict_decode64(str) end