projects
/
fms.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
version 0.3.25
[fms.git]
/
src
/
base64.cpp
diff --git
a/src/base64.cpp
b/src/base64.cpp
index
06491fc
..
a31a701
100644
(file)
--- a/
src/base64.cpp
+++ b/
src/base64.cpp
@@
-13,6
+13,8
@@
const bool Encode(const std::vector<unsigned char> &data, std::string &encoded)
{
\r
std::vector<unsigned char>::size_type currentdatapos=0;
\r
\r
{
\r
std::vector<unsigned char>::size_type currentdatapos=0;
\r
\r
+ //reserve space for encoded data 4*input/3
\r
+ encoded.reserve((4L*data.size())/3L);
\r
while(currentdatapos<data.size())
\r
{
\r
encoded.push_back(base64chars[(data[currentdatapos]>>2 & 0x3F)]);
\r
while(currentdatapos<data.size())
\r
{
\r
encoded.push_back(base64chars[(data[currentdatapos]>>2 & 0x3F)]);
\r
@@
-46,6
+48,12
@@
const bool Decode(const std::string &encoded, std::vector<unsigned char> &data)
std::string::size_type encodedpos=0;
\r
unsigned char currentbyte=0;
\r
\r
std::string::size_type encodedpos=0;
\r
unsigned char currentbyte=0;
\r
\r
+ // reserve space for decoded data (encoded size*3/4)
\r
+ if(encoded.size()>1)
\r
+ {
\r
+ data.reserve((encoded.size()*3)/4);
\r
+ }
\r
+
\r
// loop while encoded pos fits in current size
\r
while(encodedpos+3<encoded.size())
\r
{
\r
// loop while encoded pos fits in current size
\r
while(encodedpos+3<encoded.size())
\r
{
\r