diff --git a/distrho/extra/Base64.hpp b/distrho/extra/Base64.hpp index 6833f16f..bb9b7a14 100644 --- a/distrho/extra/Base64.hpp +++ b/distrho/extra/Base64.hpp @@ -86,15 +86,15 @@ bool isBase64Char(const char c) // -------------------------------------------------------------------------------------------------------------------- static inline -std::vector d_getChunkFromBase64String(const char* const base64string) +void d_getChunkFromBase64String_impl(std::vector& vector, const char* const base64string) { - DISTRHO_SAFE_ASSERT_RETURN(base64string != nullptr, std::vector()); + vector.clear(); + DISTRHO_SAFE_ASSERT_RETURN(base64string != nullptr,); uint i=0, j=0; uint charArray3[3], charArray4[4]; - std::vector ret; - ret.reserve(std::strlen(base64string)*3/4 + 4); + vector.reserve(std::strlen(base64string)*3/4 + 4); for (std::size_t l=0, len=std::strlen(base64string); l d_getChunkFromBase64String(const char* const base64string) charArray3[2] = ((charArray4[2] & 0x3) << 6) + charArray4[3]; for (i=0; i<3; ++i) - ret.push_back(static_cast(charArray3[i])); + vector.push_back(static_cast(charArray3[i])); i = 0; } @@ -138,9 +138,15 @@ std::vector d_getChunkFromBase64String(const char* const base64string) charArray3[2] = ((charArray4[2] & 0x3) << 6) + charArray4[3]; for (j=0; i>0 && j(charArray3[j])); + vector.push_back(static_cast(charArray3[j])); } +} +static inline +std::vector d_getChunkFromBase64String(const char* const base64string) +{ + std::vector ret; + d_getChunkFromBase64String_impl(ret, base64string); return ret; }