pw_tokenizer: Base64EncodedBufferSize function
Rename Base64EncodedSize to Base64EncodedBufferSize and have it include
the null terminator. This makes it easier to use directly to size
buffers for Base64 encoding.
Change-Id: Ied24eed67f8d3c5e42a405c98e0b20b30d543536
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/20300
Commit-Queue: Wyatt Hepler <hepler@google.com>
Reviewed-by: Ewout van Bekkum <ewout@google.com>
diff --git a/pw_tokenizer/base64.cc b/pw_tokenizer/base64.cc
index 7aab4af..2b87161 100644
--- a/pw_tokenizer/base64.cc
+++ b/pw_tokenizer/base64.cc
@@ -22,9 +22,9 @@
void* output_buffer,
size_t output_buffer_size_bytes) {
char* output = static_cast<char*>(output_buffer);
- const size_t encoded_size = Base64EncodedSize(binary_size_bytes);
+ const size_t encoded_size = Base64EncodedBufferSize(binary_size_bytes);
- if (output_buffer_size_bytes < encoded_size + sizeof('\0')) {
+ if (output_buffer_size_bytes < encoded_size) {
if (output_buffer_size_bytes > 0u) {
output[0] = '\0';
}
@@ -36,8 +36,8 @@
base64::Encode(std::span(static_cast<const std::byte*>(binary_message),
binary_size_bytes),
&output[1]);
- output[encoded_size] = '\0';
- return encoded_size;
+ output[encoded_size - 1] = '\0';
+ return encoded_size - sizeof('\0'); // exclude the null terminator
}
extern "C" size_t pw_tokenizer_PrefixedBase64Decode(const void* base64_message,