Author: ivan
Date: Wed Jun  3 13:40:13 2015
New Revision: 1683330

URL: http://svn.apache.org/r1683330
Log:
Use stream API to write packed revision properties manifest file during
property modification, while still use apr_file_t for flush to disk
operations.

This slightly increase memory usage since svn_stream_printf() copies string 
in provided pool, but revision properties manifest files usually not that
big to cause out of memory issues.

* subversion/libsvn_fs_fs/revprops.c
  (write_packed_revprop): Wrap stream around apr_file_t and use
   svn_stream_printf() to generate revision properties manifest file.

Modified:
    subversion/trunk/subversion/libsvn_fs_fs/revprops.c

Modified: subversion/trunk/subversion/libsvn_fs_fs/revprops.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/revprops.c?rev=1683330&r1=1683329&r2=1683330&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/revprops.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/revprops.c Wed Jun  3 13:40:13 2015
@@ -1020,16 +1020,14 @@ write_packed_revprop(const char **final_
       *final_path = svn_dirent_join(revprops->folder, PATH_MANIFEST, pool);
       SVN_ERR(svn_io_open_unique_file3(&file, tmp_path, revprops->folder,
                                        svn_io_file_del_none, pool, pool));
-
+      stream = svn_stream_from_aprfile2(file, TRUE, pool);
       for (i = 0; i < revprops->manifest->nelts; ++i)
         {
           const char *filename = APR_ARRAY_IDX(revprops->manifest, i,
                                                const char*);
-          SVN_ERR(svn_io_file_write_full(file, filename, strlen(filename),
-                                         NULL, pool));
-          SVN_ERR(svn_io_file_putc('\n', file, pool));
+          SVN_ERR(svn_stream_printf(stream, pool, "%s\n", filename));
         }
-
+      SVN_ERR(svn_stream_close(stream));
       SVN_ERR(svn_io_file_flush_to_disk(file, pool));
       SVN_ERR(svn_io_file_close(file, pool));
     }


Reply via email to