You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/07/20 02:12:01 UTC

svn commit: r1505068 - in /subversion/trunk: ./ subversion/libsvn_subr/io.c

Author: stefan2
Date: Sat Jul 20 00:12:00 2013
New Revision: 1505068

URL: http://svn.apache.org/r1505068
Log:
Merged revision 1446103 from subversion/branches/fsfs-format7:
Speed up stringbuf_from_aprfile() in case the file size is known.

Modified:
    subversion/trunk/   (props changed)
    subversion/trunk/subversion/libsvn_subr/io.c

Propchange: subversion/trunk/
------------------------------------------------------------------------------
  Merged /subversion/branches/fsfs-format7:r1446103

Modified: subversion/trunk/subversion/libsvn_subr/io.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/io.c?rev=1505068&r1=1505067&r2=1505068&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/io.c (original)
+++ subversion/trunk/subversion/libsvn_subr/io.c Sat Jul 20 00:12:00 2013
@@ -2336,7 +2336,19 @@ stringbuf_from_aprfile(svn_stringbuf_t *
         {
           apr_finfo_t finfo;
           if (! (status = apr_stat(&finfo, filename, APR_FINFO_MIN, pool)))
-            res_initial_len = (apr_size_t)finfo.size;
+            {
+              /* we've got the file length. Now, read it in one go. */
+              svn_boolean_t eof;
+              res_initial_len = (apr_size_t)finfo.size;
+              res = svn_stringbuf_create_ensure(res_initial_len, pool);
+              SVN_ERR(svn_io_file_read_full2(file, res->data,
+                                             res_initial_len, &res->len,
+                                             &eof, pool));
+              res->data[res->len] = 0;
+              
+              *result = res;
+              return SVN_NO_ERROR;
+            }
         }
     }