Author: gstein
Date: Sun May  9 23:41:01 2010
New Revision: 942631

URL: http://svn.apache.org/viewvc?rev=942631&view=rev
Log:
Convert all the old loggy functions to build/return a work item rather
than directly install it into the queue. Adjust all callers to immediately
add the work item to the queue (future revisions may defer the install).

* subversion/libsvn_wc/log.h:
  (svn_wc__loggy_delete_entry, svn_wc__loggy_delete_lock,
     svn_wc__loggy_entry_modify, svn_wc__loggy_move,
     svn_wc__loggy_set_entry_timestamp_from_wc,
     svn_wc__loggy_set_entry_working_size_from_wc,
     svn_wc__loggy_set_timestamp): add a WORK_ITEM return parameter

* subversion/libsvn_wc/log.c:
  (svn_wc__loggy_delete_entry, svn_wc__loggy_delete_lock,
     svn_wc__loggy_entry_modify, svn_wc__loggy_move,
     svn_wc__loggy_set_entry_timestamp_from_wc,
     svn_wc__loggy_set_entry_working_size_from_wc,
     svn_wc__loggy_set_timestamp): add a WORK_ITEM return parameter.
   change call to wq_add_loggy into wq_build_loggy.

* subversion/libsvn_wc/workqueue.h:
  (svn_wc__wq_add_loggy): renamed to ...
  (svn_wc__wq_build_loggy): ... this. added a WORK_ITEM return param. note
    conditions on the allocation lifetime of the params.

* subversion/libsvn_wc/workqueue.c:
  (svn_wc__wq_add_loggy): renamed to ...
  (svn_wc__wq_build_loggy): ... this. added a WORK_ITEM return param.
    construct and return the work item.

* subversion/libsvn_wc/adm_ops.c:
  (process_committed_leaf): immediately add the work item returned by
    loggy_delete_lock to the workqueue.

* subversion/libsvn_wc/merge.c:
  (save_merge_result, preserve_pre_merge_files, merge_binary_file): add
    work items returned by loggy functions to the workqueue.

* subversion/libsvn_wc/props.c:
  (svn_wc__merge_props): add the loggy_entry_modify's returned work item
    to the workqueue.

* subversion/libsvn_wc/update_editor.c:
  (do_entry_deletion, add_directory, open_directory, add_file, open_file,
      merge_file, svn_wc_add_repos_file4):  add work items returned by
    loggy functions to the workqueue. 

Modified:
    subversion/trunk/subversion/libsvn_wc/adm_ops.c
    subversion/trunk/subversion/libsvn_wc/log.c
    subversion/trunk/subversion/libsvn_wc/log.h
    subversion/trunk/subversion/libsvn_wc/merge.c
    subversion/trunk/subversion/libsvn_wc/props.c
    subversion/trunk/subversion/libsvn_wc/update_editor.c
    subversion/trunk/subversion/libsvn_wc/workqueue.c
    subversion/trunk/subversion/libsvn_wc/workqueue.h

Modified: subversion/trunk/subversion/libsvn_wc/adm_ops.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_ops.c?rev=942631&r1=942630&r2=942631&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_ops.c Sun May  9 23:41:01 2010
@@ -445,8 +445,13 @@ process_committed_leaf(svn_wc__db_t *db,
     }
 
   if (!no_unlock)
-    SVN_ERR(svn_wc__loggy_delete_lock(db, adm_abspath,
-                                      local_abspath, scratch_pool));
+    {
+      svn_skel_t *work_item;
+
+      SVN_ERR(svn_wc__loggy_delete_lock(&work_item, db, adm_abspath,
+                                        local_abspath, scratch_pool));
+      SVN_ERR(svn_wc__db_wq_add(db, adm_abspath, work_item, scratch_pool));
+    }
 
   /* Set TMP_TEXT_BASE_ABSPATH to the new text base to be installed, if any. */
   {

Modified: subversion/trunk/subversion/libsvn_wc/log.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/log.c?rev=942631&r1=942630&r2=942631&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/log.c (original)
+++ subversion/trunk/subversion/libsvn_wc/log.c Sun May  9 23:41:01 2010
@@ -666,12 +666,13 @@ loggy_path(const char **relpath,
 
 
 svn_error_t *
-svn_wc__loggy_translated_file(svn_wc__db_t *db,
+svn_wc__loggy_translated_file(svn_skel_t **work_item,
+                              svn_wc__db_t *db,
                               const char *adm_abspath,
                               const char *dst_abspath,
                               const char *src_abspath,
                               const char *versioned_abspath,
-                              apr_pool_t *scratch_pool)
+                              apr_pool_t *result_pool)
 {
   const char *loggy_path1;
   const char *loggy_path2;
@@ -683,83 +684,89 @@ svn_wc__loggy_translated_file(svn_wc__db
   SVN_ERR_ASSERT(svn_dirent_is_absolute(src_abspath));
   SVN_ERR_ASSERT(svn_dirent_is_absolute(versioned_abspath));
 
-  SVN_ERR(loggy_path(&loggy_path1, src_abspath, adm_abspath, scratch_pool));
-  SVN_ERR(loggy_path(&loggy_path2, dst_abspath, adm_abspath, scratch_pool));
+  SVN_ERR(loggy_path(&loggy_path1, src_abspath, adm_abspath, result_pool));
+  SVN_ERR(loggy_path(&loggy_path2, dst_abspath, adm_abspath, result_pool));
   SVN_ERR(loggy_path(&loggy_path3, versioned_abspath, adm_abspath,
-                     scratch_pool));
+                     result_pool));
 
-  svn_xml_make_open_tag(&log_accum, scratch_pool, svn_xml_self_closing,
+  svn_xml_make_open_tag(&log_accum, result_pool, svn_xml_self_closing,
                         SVN_WC__LOG_CP_AND_TRANSLATE,
                         SVN_WC__LOG_ATTR_NAME, loggy_path1,
                         SVN_WC__LOG_ATTR_DEST, loggy_path2,
                         SVN_WC__LOG_ATTR_ARG_2, loggy_path3,
                         NULL);
 
-  return svn_error_return(svn_wc__wq_add_loggy(db, adm_abspath, log_accum,
-                                               scratch_pool));
+  return svn_error_return(svn_wc__wq_build_loggy(work_item,
+                                                 db, adm_abspath, log_accum,
+                                                 result_pool));
 }
 
 svn_error_t *
-svn_wc__loggy_delete_entry(svn_wc__db_t *db,
+svn_wc__loggy_delete_entry(svn_skel_t **work_item,
+                           svn_wc__db_t *db,
                            const char *adm_abspath,
                            const char *local_abspath,
                            svn_revnum_t revision,
                            svn_wc__db_kind_t kind,
-                           apr_pool_t *scratch_pool)
+                           apr_pool_t *result_pool)
 {
   const char *loggy_path1;
   svn_stringbuf_t *log_accum = NULL;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
-  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, scratch_pool));
-  svn_xml_make_open_tag(&log_accum, scratch_pool, svn_xml_self_closing,
+  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, result_pool));
+  svn_xml_make_open_tag(&log_accum, result_pool, svn_xml_self_closing,
                         SVN_WC__LOG_DELETE_ENTRY,
                         SVN_WC__LOG_ATTR_NAME,
                         loggy_path1,
                         SVN_WC__LOG_ATTR_REVISION,
-                        apr_psprintf(scratch_pool, "%ld", revision),
+                        apr_psprintf(result_pool, "%ld", revision),
                         SVN_WC__LOG_ATTR_KIND,
                         kind == svn_wc__db_kind_dir ? "dir" : "file",
                         NULL);
 
-  return svn_error_return(svn_wc__wq_add_loggy(db, adm_abspath, log_accum,
-                                               scratch_pool));
+  return svn_error_return(svn_wc__wq_build_loggy(work_item,
+                                                 db, adm_abspath, log_accum,
+                                                 result_pool));
 }
 
 svn_error_t *
-svn_wc__loggy_delete_lock(svn_wc__db_t *db,
+svn_wc__loggy_delete_lock(svn_skel_t **work_item,
+                          svn_wc__db_t *db,
                           const char *adm_abspath,
                           const char *local_abspath,
-                          apr_pool_t *scratch_pool)
+                          apr_pool_t *result_pool)
 {
   const char *loggy_path1;
   svn_stringbuf_t *log_accum = NULL;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
-  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, scratch_pool));
-  svn_xml_make_open_tag(&log_accum, scratch_pool, svn_xml_self_closing,
+  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, result_pool));
+  svn_xml_make_open_tag(&log_accum, result_pool, svn_xml_self_closing,
                         SVN_WC__LOG_DELETE_LOCK,
                         SVN_WC__LOG_ATTR_NAME, loggy_path1,
                         NULL);
 
-  return svn_error_return(svn_wc__wq_add_loggy(db, adm_abspath, log_accum,
-                                               scratch_pool));
+  return svn_error_return(svn_wc__wq_build_loggy(work_item,
+                                                 db, adm_abspath, log_accum,
+                                                 result_pool));
 }
 
 
 svn_error_t *
-svn_wc__loggy_entry_modify(svn_wc__db_t *db,
+svn_wc__loggy_entry_modify(svn_skel_t **work_item,
+                           svn_wc__db_t *db,
                            const char *adm_abspath,
                            const char *local_abspath,
                            const svn_wc_entry_t *entry,
                            apr_uint64_t modify_flags,
-                           apr_pool_t *scratch_pool)
+                           apr_pool_t *result_pool)
 {
   svn_stringbuf_t *log_accum = NULL;
   const char *loggy_path1;
-  apr_hash_t *prop_hash = apr_hash_make(scratch_pool);
+  apr_hash_t *prop_hash = apr_hash_make(result_pool);
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
   SVN_ERR_ASSERT(modify_flags != 0);
@@ -815,7 +822,7 @@ svn_wc__loggy_entry_modify(svn_wc__db_t 
 
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_COPYFROM_REV,
                  SVN_WC__ENTRY_ATTR_COPYFROM_REV,
-                 apr_psprintf(scratch_pool, "%ld", entry->copyfrom_rev));
+                 apr_psprintf(result_pool, "%ld", entry->copyfrom_rev));
 
   if (modify_flags & SVN_WC__ENTRY_MODIFY_CONFLICT_OLD)
     SVN_ERR_ASSERT(entry->conflict_old != NULL);
@@ -843,7 +850,7 @@ svn_wc__loggy_entry_modify(svn_wc__db_t 
     SVN_ERR_ASSERT(entry->text_time == 0);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_TEXT_TIME,
                  SVN_WC__ENTRY_ATTR_TEXT_TIME,
-                 svn_time_to_cstring(entry->text_time, scratch_pool));
+                 svn_time_to_cstring(entry->text_time, result_pool));
 
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_CHECKSUM,
                  SVN_WC__ENTRY_ATTR_CHECKSUM,
@@ -853,32 +860,34 @@ svn_wc__loggy_entry_modify(svn_wc__db_t 
     SVN_ERR_ASSERT(entry->working_size == SVN_WC_ENTRY_WORKING_SIZE_UNKNOWN);
   ADD_ENTRY_ATTR(SVN_WC__ENTRY_MODIFY_WORKING_SIZE,
                  SVN_WC__ENTRY_ATTR_WORKING_SIZE,
-                 apr_psprintf(scratch_pool, "%" APR_OFF_T_FMT,
+                 apr_psprintf(result_pool, "%" APR_OFF_T_FMT,
                               entry->working_size));
 
 #undef ADD_ENTRY_ATTR
 
   SVN_ERR_ASSERT(apr_hash_count(prop_hash) != 0);
 
-  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, scratch_pool));
+  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, result_pool));
   apr_hash_set(prop_hash, SVN_WC__LOG_ATTR_NAME,
                APR_HASH_KEY_STRING, loggy_path1);
 
-  svn_xml_make_open_tag_hash(&log_accum, scratch_pool,
+  svn_xml_make_open_tag_hash(&log_accum, result_pool,
                              svn_xml_self_closing,
                              SVN_WC__LOG_MODIFY_ENTRY,
                              prop_hash);
-  return svn_error_return(svn_wc__wq_add_loggy(db, adm_abspath, log_accum,
-                                               scratch_pool));
+  return svn_error_return(svn_wc__wq_build_loggy(work_item,
+                                                 db, adm_abspath, log_accum,
+                                                 result_pool));
 }
 
 
 svn_error_t *
-svn_wc__loggy_move(svn_wc__db_t *db,
+svn_wc__loggy_move(svn_skel_t **work_item,
+                   svn_wc__db_t *db,
                    const char *adm_abspath,
                    const char *src_abspath,
                    const char *dst_abspath,
-                   apr_pool_t *scratch_pool)
+                   apr_pool_t *result_pool)
 {
   svn_stringbuf_t *log_accum = NULL;
   const char *loggy_path1;
@@ -888,16 +897,16 @@ svn_wc__loggy_move(svn_wc__db_t *db,
   SVN_ERR_ASSERT(svn_dirent_is_absolute(src_abspath));
   SVN_ERR_ASSERT(svn_dirent_is_absolute(dst_abspath));
 
-  SVN_ERR(loggy_path(&loggy_path1, src_abspath, adm_abspath, scratch_pool));
-  SVN_ERR(loggy_path(&loggy_path2, dst_abspath, adm_abspath, scratch_pool));
+  SVN_ERR(loggy_path(&loggy_path1, src_abspath, adm_abspath, result_pool));
+  SVN_ERR(loggy_path(&loggy_path2, dst_abspath, adm_abspath, result_pool));
 
-  SVN_ERR(svn_io_check_path(src_abspath, &kind, scratch_pool));
+  SVN_ERR(svn_io_check_path(src_abspath, &kind, result_pool));
 
   /* ### idiocy of the old world. the file better exist, if we're asking
      ### to do some work with it.  */
   SVN_ERR_ASSERT(kind != svn_node_none);
 
-  svn_xml_make_open_tag(&log_accum, scratch_pool,
+  svn_xml_make_open_tag(&log_accum, result_pool,
                         svn_xml_self_closing,
                         SVN_WC__LOG_MV,
                         SVN_WC__LOG_ATTR_NAME,
@@ -906,25 +915,27 @@ svn_wc__loggy_move(svn_wc__db_t *db,
                         loggy_path2,
                         NULL);
 
-  return svn_error_return(svn_wc__wq_add_loggy(db, adm_abspath, log_accum,
-                                               scratch_pool));
+  return svn_error_return(svn_wc__wq_build_loggy(work_item,
+                                                 db, adm_abspath, log_accum,
+                                                 result_pool));
 }
 
 
 svn_error_t *
-svn_wc__loggy_set_entry_timestamp_from_wc(svn_wc__db_t *db,
+svn_wc__loggy_set_entry_timestamp_from_wc(svn_skel_t **work_item,
+                                          svn_wc__db_t *db,
                                           const char *adm_abspath,
                                           const char *local_abspath,
-                                          apr_pool_t *scratch_pool)
+                                          apr_pool_t *result_pool)
 {
   svn_stringbuf_t *log_accum = NULL;
   const char *loggy_path1;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
-  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, scratch_pool));
+  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, result_pool));
   svn_xml_make_open_tag(&log_accum,
-                        scratch_pool,
+                        result_pool,
                         svn_xml_self_closing,
                         SVN_WC__LOG_MODIFY_ENTRY,
                         SVN_WC__LOG_ATTR_NAME,
@@ -933,24 +944,26 @@ svn_wc__loggy_set_entry_timestamp_from_w
                         SVN_WC__TIMESTAMP_WC,
                         NULL);
 
-  return svn_error_return(svn_wc__wq_add_loggy(db, adm_abspath, log_accum,
-                                               scratch_pool));
+  return svn_error_return(svn_wc__wq_build_loggy(work_item,
+                                                 db, adm_abspath, log_accum,
+                                                 result_pool));
 }
 
 svn_error_t *
-svn_wc__loggy_set_entry_working_size_from_wc(svn_wc__db_t *db,
+svn_wc__loggy_set_entry_working_size_from_wc(svn_skel_t **work_item,
+                                             svn_wc__db_t *db,
                                              const char *adm_abspath,
                                              const char *local_abspath,
-                                             apr_pool_t *scratch_pool)
+                                             apr_pool_t *result_pool)
 {
   svn_stringbuf_t *log_accum = NULL;
   const char *loggy_path1;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
-  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, scratch_pool));
+  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, result_pool));
   svn_xml_make_open_tag(&log_accum,
-                        scratch_pool,
+                        result_pool,
                         svn_xml_self_closing,
                         SVN_WC__LOG_MODIFY_ENTRY,
                         SVN_WC__LOG_ATTR_NAME,
@@ -959,26 +972,28 @@ svn_wc__loggy_set_entry_working_size_fro
                         SVN_WC__WORKING_SIZE_WC,
                         NULL);
 
-  return svn_error_return(svn_wc__wq_add_loggy(db, adm_abspath, log_accum,
-                                               scratch_pool));
+  return svn_error_return(svn_wc__wq_build_loggy(work_item,
+                                                 db, adm_abspath, log_accum,
+                                                 result_pool));
 }
 
 
 svn_error_t *
-svn_wc__loggy_set_timestamp(svn_wc__db_t *db,
+svn_wc__loggy_set_timestamp(svn_skel_t **work_item,
+                            svn_wc__db_t *db,
                             const char *adm_abspath,
                             const char *local_abspath,
                             const char *timestr,
-                            apr_pool_t *scratch_pool)
+                            apr_pool_t *result_pool)
 {
   svn_stringbuf_t *log_accum = NULL;
   const char *loggy_path1;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
-  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, scratch_pool));
+  SVN_ERR(loggy_path(&loggy_path1, local_abspath, adm_abspath, result_pool));
   svn_xml_make_open_tag(&log_accum,
-                        scratch_pool,
+                        result_pool,
                         svn_xml_self_closing,
                         SVN_WC__LOG_SET_TIMESTAMP,
                         SVN_WC__LOG_ATTR_NAME,
@@ -987,28 +1002,30 @@ svn_wc__loggy_set_timestamp(svn_wc__db_t
                         timestr,
                         NULL);
 
-  return svn_error_return(svn_wc__wq_add_loggy(db, adm_abspath, log_accum,
-                                               scratch_pool));
+  return svn_error_return(svn_wc__wq_build_loggy(work_item,
+                                                 db, adm_abspath, log_accum,
+                                                 result_pool));
 }
 
 
 svn_error_t *
-svn_wc__loggy_add_tree_conflict(svn_wc__db_t *db,
+svn_wc__loggy_add_tree_conflict(svn_skel_t **work_item,
+                                svn_wc__db_t *db,
                                 const char *adm_abspath,
                                 const svn_wc_conflict_description2_t *conflict,
-                                apr_pool_t *scratch_pool)
+                                apr_pool_t *result_pool)
 {
   svn_stringbuf_t *log_accum = NULL;
   const char *victim_basename;
   svn_skel_t *skel;
   const char *conflict_data;
 
-  victim_basename = svn_dirent_basename(conflict->local_abspath, scratch_pool);
+  victim_basename = svn_dirent_basename(conflict->local_abspath, result_pool);
   SVN_ERR(svn_wc__serialize_conflict(&skel, conflict,
-                                     scratch_pool, scratch_pool));
-  conflict_data = svn_skel__unparse(skel, scratch_pool)->data,
+                                     result_pool, result_pool));
+  conflict_data = svn_skel__unparse(skel, result_pool)->data,
 
-  svn_xml_make_open_tag(&log_accum, scratch_pool, svn_xml_self_closing,
+  svn_xml_make_open_tag(&log_accum, result_pool, svn_xml_self_closing,
                         SVN_WC__LOG_ADD_TREE_CONFLICT,
                         SVN_WC__LOG_ATTR_NAME,
                         victim_basename,
@@ -1016,8 +1033,9 @@ svn_wc__loggy_add_tree_conflict(svn_wc__
                         conflict_data,
                         NULL);
 
-  return svn_error_return(svn_wc__wq_add_loggy(db, adm_abspath, log_accum,
-                                               scratch_pool));
+  return svn_error_return(svn_wc__wq_build_loggy(work_item,
+                                                 db, adm_abspath, log_accum,
+                                                 result_pool));
 }
 
 

Modified: subversion/trunk/subversion/libsvn_wc/log.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/log.h?rev=942631&r1=942630&r2=942631&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/log.h (original)
+++ subversion/trunk/subversion/libsvn_wc/log.h Sun May  9 23:41:01 2010
@@ -32,6 +32,7 @@
 #include "svn_wc.h"
 
 #include "wc_db.h"
+#include "private/svn_skel.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -48,12 +49,13 @@ extern "C" {
    ADM_ABSPATH is the absolute path for the admin directory for PATH.
    DST and SRC and VERSIONED are relative to ADM_ABSPATH.  */
 svn_error_t *
-svn_wc__loggy_translated_file(svn_wc__db_t *db,
+svn_wc__loggy_translated_file(svn_skel_t **work_item,
+                              svn_wc__db_t *db,
                               const char *adm_abspath,
                               const char *dst_abspath,
                               const char *src_abspath,
                               const char *versioned_abspath,
-                              apr_pool_t *scratch_pool);
+                              apr_pool_t *result_pool);
 
 /* Insert into DB a work queue instruction to delete the entry
    associated with PATH from the entries file.
@@ -64,12 +66,13 @@ svn_wc__loggy_translated_file(svn_wc__db
    Use SCRATCH_POOL for temporary allocations.
 */
 svn_error_t *
-svn_wc__loggy_delete_entry(svn_wc__db_t *db,
+svn_wc__loggy_delete_entry(svn_skel_t **work_item,
+                           svn_wc__db_t *db,
                            const char *adm_abspath,
                            const char *local_abspath,
                            svn_revnum_t revision,
                            svn_wc__db_kind_t kind,
-                           apr_pool_t *scratch_pool);
+                           apr_pool_t *result_pool);
 
 
 /* Insert into DB a work queue instruction to delete lock related
@@ -79,10 +82,11 @@ svn_wc__loggy_delete_entry(svn_wc__db_t 
    Use SCRATCH_POOL for temporary allocations.
 */
 svn_error_t *
-svn_wc__loggy_delete_lock(svn_wc__db_t *db,
+svn_wc__loggy_delete_lock(svn_skel_t **work_item,
+                          svn_wc__db_t *db,
                           const char *adm_abspath,
                           const char *local_abspath,
-                          apr_pool_t *scratch_pool);
+                          apr_pool_t *result_pool);
 
 
 /* Queue operations to modify the entry associated with PATH
@@ -97,12 +101,13 @@ svn_wc__loggy_delete_lock(svn_wc__db_t *
    Use SCRATCH_POOL for temporary allocations.
 */
 svn_error_t *
-svn_wc__loggy_entry_modify(svn_wc__db_t *db,
+svn_wc__loggy_entry_modify(svn_skel_t **work_item,
+                           svn_wc__db_t *db,
                            const char *adm_abspath,
                            const char *local_abspath,
                            const svn_wc_entry_t *entry,
                            apr_uint64_t modify_flags,
-                           apr_pool_t *scratch_pool);
+                           apr_pool_t *result_pool);
 
 
 /* Queue instructions to move the file SRC_PATH to DST_PATH.
@@ -117,18 +122,20 @@ svn_wc__loggy_entry_modify(svn_wc__db_t 
    the move or the remove will have been carried out.
 */
 svn_error_t *
-svn_wc__loggy_move(svn_wc__db_t *db,
+svn_wc__loggy_move(svn_skel_t **work_item,
+                   svn_wc__db_t *db,
                    const char *adm_abspath,
                    const char *src_abspath,
                    const char *dst_abspath,
-                   apr_pool_t *scratch_pool);
+                   apr_pool_t *result_pool);
 
 
 svn_error_t *
-svn_wc__loggy_set_entry_timestamp_from_wc(svn_wc__db_t *db,
+svn_wc__loggy_set_entry_timestamp_from_wc(svn_skel_t **work_item,
+                                          svn_wc__db_t *db,
                                           const char *adm_abspath,
                                           const char *local_abspath,
-                                          apr_pool_t *scratch_pool);
+                                          apr_pool_t *result_pool);
 
 
 /* Queue log instructions to set the file size of PATH
@@ -137,10 +144,11 @@ svn_wc__loggy_set_entry_timestamp_from_w
    ADM_ABSPATH is the absolute path for the admin directory for PATH.
 */
 svn_error_t *
-svn_wc__loggy_set_entry_working_size_from_wc(svn_wc__db_t *db,
+svn_wc__loggy_set_entry_working_size_from_wc(svn_skel_t **work_item,
+                                             svn_wc__db_t *db,
                                              const char *adm_abspath,
                                              const char *local_abspath,
-                                             apr_pool_t *scratch_pool);
+                                             apr_pool_t *result_pool);
 
 
 /* Queue instructions to set the timestamp of PATH to
@@ -149,18 +157,20 @@ svn_wc__loggy_set_entry_working_size_fro
    ADM_ABSPATH is the absolute path for the admin directory for PATH.
 */
 svn_error_t *
-svn_wc__loggy_set_timestamp(svn_wc__db_t *db,
+svn_wc__loggy_set_timestamp(svn_skel_t **work_item,
+                            svn_wc__db_t *db,
                             const char *adm_abspath,
                             const char *local_abspath,
                             const char *timestr,
-                            apr_pool_t *scratch_pool);
+                            apr_pool_t *result_pool);
 
 /* */
 svn_error_t *
-svn_wc__loggy_add_tree_conflict(svn_wc__db_t *db,
+svn_wc__loggy_add_tree_conflict(svn_skel_t **work_item,
+                                svn_wc__db_t *db,
                                 const char *adm_abspath,
                                 const svn_wc_conflict_description2_t *conflict,
-                                apr_pool_t *scratch_pool);
+                                apr_pool_t *result_pool);
 
 
 /* TODO ###

Modified: subversion/trunk/subversion/libsvn_wc/merge.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/merge.c?rev=942631&r1=942630&r2=942631&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/merge.c (original)
+++ subversion/trunk/subversion/libsvn_wc/merge.c Sun May  9 23:41:01 2010
@@ -414,6 +414,7 @@ save_merge_result(svn_wc__db_t *db,
   const char *edited_copy_abspath;
   const char *dir_abspath;
   const char *merge_filename;
+  svn_skel_t *work_item;
 
   svn_dirent_split(target_abspath, &dir_abspath, &merge_filename, pool);
 
@@ -426,11 +427,13 @@ save_merge_result(svn_wc__db_t *db,
                                      ".edited",
                                      svn_io_file_del_none,
                                      pool, pool));
-  SVN_ERR(svn_wc__loggy_translated_file(db, dir_abspath,
+  SVN_ERR(svn_wc__loggy_translated_file(&work_item,
+                                        db, dir_abspath,
                                         edited_copy_abspath,
                                         result_target,
                                         target_abspath,
                                         pool));
+  SVN_ERR(svn_wc__db_wq_add(db, dir_abspath, work_item, pool));
 
   return SVN_NO_ERROR;
 }
@@ -605,6 +608,7 @@ preserve_pre_merge_files(svn_wc__db_t *d
   const char *dir_abspath, *target_name;
   const char *temp_dir;
   svn_wc_entry_t tmp_entry;
+  svn_skel_t *work_item;
 
   svn_dirent_split(target_abspath, &dir_abspath, &target_name, pool);
   SVN_ERR(svn_wc__db_temp_wcroot_tempdir(&temp_dir, db, target_abspath,
@@ -685,12 +689,14 @@ preserve_pre_merge_files(svn_wc__db_t *d
   /* Create LEFT and RIGHT backup files, in expanded form.
      We use TARGET_ABSPATH's current properties to do the translation. */
   /* Derive the basenames of the 3 backup files. */
-  SVN_ERR(svn_wc__loggy_translated_file(db, dir_abspath,
+  SVN_ERR(svn_wc__loggy_translated_file(&work_item, db, dir_abspath,
                                         left_copy, tmp_left,
                                         target_abspath, pool));
-  SVN_ERR(svn_wc__loggy_translated_file(db, dir_abspath,
+  SVN_ERR(svn_wc__db_wq_add(db, dir_abspath, work_item, pool));
+  SVN_ERR(svn_wc__loggy_translated_file(&work_item, db, dir_abspath,
                                         right_copy, tmp_right,
                                         target_abspath, pool));
+  SVN_ERR(svn_wc__db_wq_add(db, dir_abspath, work_item, pool));
 
   /* Back up TARGET_ABSPATH through detranslation/retranslation:
      the new translation properties may not match the current ones */
@@ -699,9 +705,10 @@ preserve_pre_merge_files(svn_wc__db_t *d
            SVN_WC_TRANSLATE_TO_NF | SVN_WC_TRANSLATE_NO_OUTPUT_CLEANUP,
            cancel_func, cancel_baton,
            pool, pool));
-  SVN_ERR(svn_wc__loggy_translated_file(db, dir_abspath,
+  SVN_ERR(svn_wc__loggy_translated_file(&work_item, db, dir_abspath,
                                         target_copy, detranslated_target_copy,
                                         target_abspath, pool));
+  SVN_ERR(svn_wc__db_wq_add(db, dir_abspath, work_item, pool));
 
   tmp_entry.conflict_old = svn_dirent_is_child(dir_abspath, left_copy, pool);
   tmp_entry.conflict_new = svn_dirent_is_child(dir_abspath, right_copy, pool);
@@ -709,12 +716,13 @@ preserve_pre_merge_files(svn_wc__db_t *d
 
   /* Mark TARGET_ABSPATH's entry as "Conflicted", and start tracking
      the backup files in the entry as well. */
-  SVN_ERR(svn_wc__loggy_entry_modify(db, dir_abspath,
+  SVN_ERR(svn_wc__loggy_entry_modify(&work_item, db, dir_abspath,
                                      target_abspath, &tmp_entry,
                                      SVN_WC__ENTRY_MODIFY_CONFLICT_OLD
                                        | SVN_WC__ENTRY_MODIFY_CONFLICT_NEW
                                        | SVN_WC__ENTRY_MODIFY_CONFLICT_WRK,
                                      pool));
+  SVN_ERR(svn_wc__db_wq_add(db, dir_abspath, work_item, pool));
 
   return SVN_NO_ERROR;
 }
@@ -1016,6 +1024,7 @@ merge_binary_file(enum svn_wc_merge_outc
   const char *left_base, *right_base;
   const char *merge_dirpath, *merge_filename;
   svn_wc_entry_t tmp_entry;
+  svn_skel_t *work_item;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(target_abspath));
 
@@ -1094,8 +1103,6 @@ merge_binary_file(enum svn_wc_merge_outc
 
       if (install_from != NULL)
         {
-          svn_skel_t *work_item;
-
           SVN_ERR(svn_wc__wq_build_file_install(&work_item,
                                                 db, target_abspath,
                                                 install_from,
@@ -1143,11 +1150,12 @@ merge_binary_file(enum svn_wc_merge_outc
                                          target_label,
                                          svn_io_file_del_none,
                                          pool, pool));
-      SVN_ERR(svn_wc__loggy_move(db,
+      SVN_ERR(svn_wc__loggy_move(&work_item, db,
                                  merge_dirpath,
                                  detranslated_target_abspath,
                                  mine_copy,
                                  pool));
+      SVN_ERR(svn_wc__db_wq_add(db, merge_dirpath, work_item, pool));
 
       mine_copy = svn_dirent_is_child(merge_dirpath,
                                       mine_copy, pool);
@@ -1165,12 +1173,14 @@ merge_binary_file(enum svn_wc_merge_outc
   tmp_entry.conflict_old = left_base;
   tmp_entry.conflict_new = right_base;
   SVN_ERR(svn_wc__loggy_entry_modify(
+            &work_item,
             db, merge_dirpath, target_abspath,
             &tmp_entry,
             SVN_WC__ENTRY_MODIFY_CONFLICT_OLD
               | SVN_WC__ENTRY_MODIFY_CONFLICT_NEW
               | SVN_WC__ENTRY_MODIFY_CONFLICT_WRK,
             pool));
+  SVN_ERR(svn_wc__db_wq_add(db, merge_dirpath, work_item, pool));
 
   *merge_outcome = svn_wc_merge_conflict; /* a conflict happened */
 

Modified: subversion/trunk/subversion/libsvn_wc/props.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/props.c?rev=942631&r1=942630&r2=942631&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/props.c (original)
+++ subversion/trunk/subversion/libsvn_wc/props.c Sun May  9 23:41:01 2010
@@ -1820,12 +1820,14 @@ svn_wc__merge_props(svn_wc_notify_state_
       /* Mark entry as "conflicted" with a particular .prej file. */
       {
         svn_wc_entry_t entry;
+        svn_skel_t *work_item;
 
         entry.prejfile = svn_dirent_is_child(adm_abspath, reject_path, NULL);
-        SVN_ERR(svn_wc__loggy_entry_modify(db, adm_abspath,
+        SVN_ERR(svn_wc__loggy_entry_modify(&work_item, db, adm_abspath,
                                            local_abspath, &entry,
                                            SVN_WC__ENTRY_MODIFY_PREJFILE,
                                            scratch_pool));
+        SVN_ERR(svn_wc__db_wq_add(db, local_abspath, work_item, scratch_pool));
       }
 
       /* Once the prejfile is recorded, then install the file.  */

Modified: subversion/trunk/subversion/libsvn_wc/update_editor.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/update_editor.c?rev=942631&r1=942630&r2=942631&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/trunk/subversion/libsvn_wc/update_editor.c Sun May  9 23:41:01 
2010
@@ -2086,6 +2086,7 @@ do_entry_deletion(struct edit_baton *eb,
   svn_wc_conflict_description2_t *tree_conflict = NULL;
   const char *dir_abspath = svn_dirent_dirname(local_abspath, pool);
   svn_boolean_t hidden;
+  svn_skel_t *work_item;
 
   SVN_ERR(svn_wc__db_read_kind(&kind, eb->db, local_abspath, FALSE, pool));
 
@@ -2133,8 +2134,9 @@ do_entry_deletion(struct edit_baton *eb,
       /* When we raise a tree conflict on a directory, we want to avoid
        * making any changes inside it. (Will an update ever try to make
        * further changes to or inside a directory it's just deleted?) */
-      SVN_ERR(svn_wc__loggy_add_tree_conflict(eb->db, dir_abspath,
+      SVN_ERR(svn_wc__loggy_add_tree_conflict(&work_item, eb->db, dir_abspath,
                                               tree_conflict, pool));
+      SVN_ERR(svn_wc__db_wq_add(eb->db, dir_abspath, work_item, pool));
 
       SVN_ERR(remember_skipped_tree(eb, local_abspath));
 
@@ -2207,18 +2209,22 @@ do_entry_deletion(struct edit_baton *eb,
   if (strcmp(local_abspath, eb->target_abspath) != 0)
     {
       /* Delete, and do not leave a not-present node.  */
-      SVN_ERR(svn_wc__loggy_delete_entry(eb->db, dir_abspath, local_abspath,
+      SVN_ERR(svn_wc__loggy_delete_entry(&work_item,
+                                         eb->db, dir_abspath, local_abspath,
                                          SVN_INVALID_REVNUM,
                                          svn_wc__db_kind_unknown,
                                          pool));
+      SVN_ERR(svn_wc__db_wq_add(eb->db, dir_abspath, work_item, pool));
     }
   else
     {
       /* Delete, leaving a not-present node.  */
-      SVN_ERR(svn_wc__loggy_delete_entry(eb->db, dir_abspath, local_abspath,
+      SVN_ERR(svn_wc__loggy_delete_entry(&work_item,
+                                         eb->db, dir_abspath, local_abspath,
                                          *eb->target_revision,
                                          kind,
                                          pool));
+      SVN_ERR(svn_wc__db_wq_add(eb->db, dir_abspath, work_item, pool));
       eb->target_deleted = TRUE;
     }
 
@@ -2574,12 +2580,17 @@ add_directory(const char *path,
 
               if (tree_conflict != NULL)
                 {
+                  svn_skel_t *work_item;
+
                   /* Queue this conflict in the parent so that its descendants
                      are skipped silently. */
-                  SVN_ERR(svn_wc__loggy_add_tree_conflict(eb->db,
+                  SVN_ERR(svn_wc__loggy_add_tree_conflict(&work_item,
+                                                          eb->db,
                                                           pb->local_abspath,
                                                           tree_conflict,
                                                           pool));
+                  SVN_ERR(svn_wc__db_wq_add(eb->db, pb->local_abspath,
+                                            work_item, pool));
 
                   SVN_ERR(remember_skipped_tree(eb, db->local_abspath));
 
@@ -2778,9 +2789,13 @@ open_directory(const char *path,
   /* Remember the roots of any locally deleted trees. */
   if (tree_conflict != NULL)
     {
+      svn_skel_t *work_item;
+
       /* Place a tree conflict into the parent work queue.  */
-      SVN_ERR(svn_wc__loggy_add_tree_conflict(eb->db, pb->local_abspath,
+      SVN_ERR(svn_wc__loggy_add_tree_conflict(&work_item,
+                                              eb->db, pb->local_abspath,
                                               tree_conflict, pool));
+      SVN_ERR(svn_wc__db_wq_add(eb->db, pb->local_abspath, work_item, pool));
 
       do_notification(eb, db->local_abspath, svn_node_dir,
                       svn_wc_notify_tree_conflict, pool);
@@ -3903,12 +3918,17 @@ add_file(const char *path,
 
               if (tree_conflict != NULL)
                 {
+                  svn_skel_t *work_item;
+
                   /* Record the conflict so that the file is skipped silently
                      by the other callbacks. */
-                  SVN_ERR(svn_wc__loggy_add_tree_conflict(eb->db,
+                  SVN_ERR(svn_wc__loggy_add_tree_conflict(&work_item,
+                                                          eb->db,
                                                           pb->local_abspath,
                                                           tree_conflict,
                                                           subpool));
+                  SVN_ERR(svn_wc__db_wq_add(eb->db, pb->local_abspath,
+                                            work_item, pool));
 
                   SVN_ERR(remember_skipped_tree(eb, fb->local_abspath));
                   fb->skip_this = TRUE;
@@ -4013,8 +4033,12 @@ open_file(const char *path,
   /* Is this path the victim of a newly-discovered tree conflict? */
   if (tree_conflict)
     {
-      SVN_ERR(svn_wc__loggy_add_tree_conflict(eb->db, pb->local_abspath,
+      svn_skel_t *work_item;
+
+      SVN_ERR(svn_wc__loggy_add_tree_conflict(&work_item,
+                                              eb->db, pb->local_abspath,
                                               tree_conflict, pool));
+      SVN_ERR(svn_wc__db_wq_add(eb->db, pb->local_abspath, work_item, pool));
 
       if (tree_conflict->reason == svn_wc_conflict_reason_deleted ||
           tree_conflict->reason == svn_wc_conflict_reason_replaced)
@@ -4623,10 +4647,11 @@ merge_file(svn_skel_t **work_items,
       /* Move the temp text-base file to its final destination.
        * FB->text_base_path is the appropriate path: the "revert-base" path
        * if the node is replaced, else the usual text-base path. */
-      SVN_ERR(svn_wc__loggy_move(eb->db, pb->local_abspath,
+      SVN_ERR(svn_wc__loggy_move(&work_item, eb->db, pb->local_abspath,
                                  new_text_base_tmp_abspath,
                                  fb->text_base_abspath,
                                  pool));
+      SVN_ERR(svn_wc__db_wq_add(eb->db, pb->local_abspath, work_item, pool));
     }
 #endif
 
@@ -4639,22 +4664,30 @@ merge_file(svn_skel_t **work_items,
       /* Adjust working copy file unless this file is an allowed
          obstruction. */
       if (fb->last_changed_date && !fb->obstruction_found)
-        SVN_ERR(svn_wc__loggy_set_timestamp(
-                  eb->db, pb->local_abspath,
-                  fb->local_abspath, fb->last_changed_date,
-                  pool));
+        {
+          SVN_ERR(svn_wc__loggy_set_timestamp(
+                    &work_item, eb->db, pb->local_abspath,
+                    fb->local_abspath, fb->last_changed_date,
+                    pool));
+          SVN_ERR(svn_wc__db_wq_add(eb->db, pb->local_abspath, work_item,
+                                    pool));
+        }
 
       if ((new_text_base_tmp_abspath || magic_props_changed)
           && !fb->deleted)
         {
           /* Adjust entries file to match working file */
           SVN_ERR(svn_wc__loggy_set_entry_timestamp_from_wc(
-                    eb->db, pb->local_abspath,
+                    &work_item, eb->db, pb->local_abspath,
                     fb->local_abspath, pool));
+          SVN_ERR(svn_wc__db_wq_add(eb->db, pb->local_abspath, work_item,
+                                    pool));
         }
+
       SVN_ERR(svn_wc__loggy_set_entry_working_size_from_wc(
-                eb->db, pb->local_abspath,
+                &work_item, eb->db, pb->local_abspath,
                 fb->local_abspath, pool));
+      SVN_ERR(svn_wc__db_wq_add(eb->db, pb->local_abspath, work_item, pool));
     }
 
   /* Set the returned content state. */
@@ -5840,6 +5873,7 @@ svn_wc_add_repos_file4(svn_wc_context_t 
   svn_checksum_t *base_checksum;
   struct last_change_info *last_change = NULL;
   const char *source_abspath = NULL;
+  svn_skel_t *work_item;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
   SVN_ERR_ASSERT(new_base_contents != NULL);
@@ -5939,9 +5973,10 @@ svn_wc_add_repos_file4(svn_wc_context_t 
           | SVN_WC__ENTRY_MODIFY_COPIED;
       }
 
-    SVN_ERR(svn_wc__loggy_entry_modify(db, dir_abspath,
+    SVN_ERR(svn_wc__loggy_entry_modify(&work_item, db, dir_abspath,
                                        local_abspath, &tmp_entry,
                                        modify_flags, pool));
+    SVN_ERR(svn_wc__db_wq_add(db, dir_abspath, work_item, pool));
   }
 
   /* ### Clear working node status in preparation for writing a new node. */
@@ -5959,12 +5994,13 @@ svn_wc_add_repos_file4(svn_wc_context_t 
        have an explicid 'changed' value, so we set the value to 'undefined'. */
     tmp_entry.text_time = 0;
 
-    SVN_ERR(svn_wc__loggy_entry_modify(db, dir_abspath,
+    SVN_ERR(svn_wc__loggy_entry_modify(&work_item, db, dir_abspath,
                                        local_abspath,  &tmp_entry,
                                        SVN_WC__ENTRY_MODIFY_KIND
                                          | SVN_WC__ENTRY_MODIFY_TEXT_TIME
                                          | SVN_WC__ENTRY_MODIFY_WORKING_SIZE,
                                        pool));
+    SVN_ERR(svn_wc__db_wq_add(db, dir_abspath, work_item, pool));
   }
 
   /* Update LAST_CHANGE to reflect the entry props in NEW_BASE_PROPS, and
@@ -6034,16 +6070,18 @@ svn_wc_add_repos_file4(svn_wc_context_t 
          (Install it as the normal text base, not the 'revert base'.) */
       SVN_ERR(svn_wc__text_base_path(&text_base_abspath, db, local_abspath,
                                      FALSE, pool));
-      SVN_ERR(svn_wc__loggy_move(db, dir_abspath,
+      SVN_ERR(svn_wc__loggy_move(&work_item, db, dir_abspath,
                                  tmp_text_base_abspath, text_base_abspath,
                                  pool));
+      SVN_ERR(svn_wc__db_wq_add(db, dir_abspath, work_item, pool));
 
       tmp_entry.checksum = svn_checksum_to_cstring(base_checksum, pool);
 
-      SVN_ERR(svn_wc__loggy_entry_modify(db, dir_abspath,
+      SVN_ERR(svn_wc__loggy_entry_modify(&work_item, db, dir_abspath,
                                          local_abspath, &tmp_entry,
                                          SVN_WC__ENTRY_MODIFY_CHECKSUM,
                                          pool));
+      SVN_ERR(svn_wc__db_wq_add(db, dir_abspath, work_item, pool));
     }
 
   /* ### HACK: The following code should be performed in the same transaction 
as the install */

Modified: subversion/trunk/subversion/libsvn_wc/workqueue.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/workqueue.c?rev=942631&r1=942630&r2=942631&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/workqueue.c (original)
+++ subversion/trunk/subversion/libsvn_wc/workqueue.c Sun May  9 23:41:01 2010
@@ -842,25 +842,25 @@ run_loggy(svn_wc__db_t *db,
 
 
 svn_error_t *
-svn_wc__wq_add_loggy(svn_wc__db_t *db,
-                     const char *adm_abspath,
-                     const svn_stringbuf_t *log_content,
-                     apr_pool_t *scratch_pool)
+svn_wc__wq_build_loggy(svn_skel_t **work_item,
+                       svn_wc__db_t *db,
+                       const char *adm_abspath,
+                       const svn_stringbuf_t *log_content,
+                       apr_pool_t *result_pool)
 {
-  svn_skel_t *work_item;
-
   if (log_content == NULL || svn_stringbuf_isempty(log_content))
-    return SVN_NO_ERROR;
-
-  work_item = svn_skel__make_empty_list(scratch_pool);
+    {
+      *work_item = NULL;
+      return SVN_NO_ERROR;
+    }
 
-  /* The skel still points at ADM_ABSPATH and LOG_CONTENT, but the skel will
-     be serialized just below in the wq_add call.  */
-  svn_skel__prepend_str(log_content->data, work_item, scratch_pool);
-  svn_skel__prepend_str(adm_abspath, work_item, scratch_pool);
-  svn_skel__prepend_str(OP_LOGGY, work_item, scratch_pool);
+  *work_item = svn_skel__make_empty_list(result_pool);
 
-  SVN_ERR(svn_wc__db_wq_add(db, adm_abspath, work_item, scratch_pool));
+  /* NOTE: the skel still points at ADM_ABSPATH and LOG_CONTENT, but we
+     require these parameters to be allocated in RESULT_POOL.  */
+  svn_skel__prepend_str(log_content->data, *work_item, result_pool);
+  svn_skel__prepend_str(adm_abspath, *work_item, result_pool);
+  svn_skel__prepend_str(OP_LOGGY, *work_item, result_pool);
 
   return SVN_NO_ERROR;
 }

Modified: subversion/trunk/subversion/libsvn_wc/workqueue.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/workqueue.h?rev=942631&r1=942630&r2=942631&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/workqueue.h (original)
+++ subversion/trunk/subversion/libsvn_wc/workqueue.h Sun May  9 23:41:01 2010
@@ -188,13 +188,17 @@ svn_wc__wq_add_killme(svn_wc__db_t *db,
 /* ### temporary compat for mapping the old loggy into workqueue space.
 
    LOG_CONTENT may be NULL or reference an empty log. No work item will be
-   queued in this case.
+   built in this case.
+
+   NOTE: ADM_ABSPATH and LOG_CONTENT must live at least as long as
+   RESULT_POOL (typically, they'll be allocated within RESULT_POOL).
 */
 svn_error_t *
-svn_wc__wq_add_loggy(svn_wc__db_t *db,
-                     const char *adm_abspath,
-                     const svn_stringbuf_t *log_content,
-                     apr_pool_t *scratch_pool);
+svn_wc__wq_build_loggy(svn_skel_t **work_item,
+                       svn_wc__db_t *db,
+                       const char *adm_abspath,
+                       const svn_stringbuf_t *log_content,
+                       apr_pool_t *result_pool);
 
 
 svn_error_t *


Reply via email to