Author: ivan
Date: Sun May 22 06:45:23 2011
New Revision: 1125871
URL: http://svn.apache.org/viewvc?rev=1125871&view=rev
Log:
* subversion/libsvn_subr/svn_base64.c
(encode_bytes): Resize the stringbuf to make room for the (approximate)
size of output, to avoid repeated resizes later.
Modified:
subversion/trunk/subversion/libsvn_subr/svn_base64.c
Modified: subversion/trunk/subversion/libsvn_subr/svn_base64.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/svn_base64.c?rev=1125871&r1=1125870&r2=1125871&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/svn_base64.c (original)
+++ subversion/trunk/subversion/libsvn_subr/svn_base64.c Sun May 22 06:45:23
2011
@@ -79,6 +79,17 @@ encode_bytes(svn_stringbuf_t *str, const
{
char group[4];
const char *p = data, *end = p + len;
+ apr_size_t buflen;
+
+ /* Resize the stringbuf to make room for the (approximate) size of
+ output, to avoid repeated resizes later. */
+ buflen = len * 4 / 3 + 4;
+ if (break_lines)
+ {
+ /* Add an extra space for line breaks. */
+ buflen = buflen + buflen / BASE64_LINELEN;
+ }
+ svn_stringbuf_ensure(str, buflen);
/* Keep encoding three-byte groups until we run out. */
while (*inbuflen + (end - p) >= 3)