diff --git a/CHANGES b/CHANGES index ee46cf3..a398fa0 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,7 @@ 0.23: also recognize EPFNOSUPPORT as EAFNOSUPPORT (groan) fix a few man pages + optimize fmt_base64 (Dan Gundlach) 0.22: uh, the scope_id detection #defined the wrong constant. libowfat diff --git a/textcode/fmt_base64.c b/textcode/fmt_base64.c index 1c1d387..4753445 100644 --- a/textcode/fmt_base64.c +++ b/textcode/fmt_base64.c @@ -6,18 +6,19 @@ unsigned long fmt_base64(char* dest,const char* src,unsigned long len) { register const unsigned char* s=(const unsigned char*) src; unsigned short bits=0,temp=0; unsigned long written=0,i; + if (!dest) return ((len+2)/3)*4; for (i=0; i6) { - if (dest) dest[written]=base64[((temp>>(bits-6))&63)]; + dest[written]=base64[((temp>>(bits-6))&63)]; ++written; bits-=6; } } if (bits) { temp<<=(6-bits); - if (dest) dest[written]=base64[temp&63]; + dest[written]=base64[temp&63]; ++written; } - while (written&3) { if (dest) dest[written]='='; ++written; } + while (written&3) { dest[written]='='; ++written; } return written; }