X-Git-Url: https://git.pterodactylus.net/?p=fms.git;a=blobdiff_plain;f=src%2Fbase64.cpp;h=a31a701ae1fe413c74788dec24275bdd2aac25c4;hp=06491fc0d7a0f9f099ac393210f4bd752cea8c33;hb=b9c3763a932cebaa015a27fe111017f6f34dfbaa;hpb=37a8d59548287dcad78ef00e7b18058721eb9935 diff --git a/src/base64.cpp b/src/base64.cpp index 06491fc..a31a701 100644 --- a/src/base64.cpp +++ b/src/base64.cpp @@ -13,6 +13,8 @@ const bool Encode(const std::vector &data, std::string &encoded) { std::vector::size_type currentdatapos=0; + //reserve space for encoded data 4*input/3 + encoded.reserve((4L*data.size())/3L); while(currentdatapos>2 & 0x3F)]); @@ -46,6 +48,12 @@ const bool Decode(const std::string &encoded, std::vector &data) std::string::size_type encodedpos=0; unsigned char currentbyte=0; + // reserve space for decoded data (encoded size*3/4) + if(encoded.size()>1) + { + data.reserve((encoded.size()*3)/4); + } + // loop while encoded pos fits in current size while(encodedpos+3