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)


Reply via email to