You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2011/10/24 16:36:47 UTC

svn commit: r1188155 - in /subversion/trunk/subversion: include/private/svn_mergeinfo_private.h libsvn_client/merge.c libsvn_client/mergeinfo.c libsvn_subr/mergeinfo.c

Author: julianfoad
Date: Mon Oct 24 14:36:46 2011
New Revision: 1188155

URL: http://svn.apache.org/viewvc?rev=1188155&view=rev
Log:
Do shallow copies instead of deep copies in a couple of mergeinfo functions.

* subversion/include/private/svn_mergeinfo_private.h,
  subversion/libsvn_subr/mergeinfo.c
  (svn_mergeinfo__add_suffix_to_mergeinfo): Change to do shallow copying;
    its current callers only need shallow copies.

* subversion/libsvn_client/mergeinfo.c
  (svn_client__adjust_mergeinfo_source_paths): Change to do shallow copying;
    two of its three current callers only need shallow copies.

* subversion/libsvn_client/merge.c
  (inherit_implicit_mergeinfo_from_parent): Dup the mergeinfo into the
    result pool after calling svn_client__adjust_mergeinfo_source_paths().

Modified:
    subversion/trunk/subversion/include/private/svn_mergeinfo_private.h
    subversion/trunk/subversion/libsvn_client/merge.c
    subversion/trunk/subversion/libsvn_client/mergeinfo.c
    subversion/trunk/subversion/libsvn_subr/mergeinfo.c

Modified: subversion/trunk/subversion/include/private/svn_mergeinfo_private.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_mergeinfo_private.h?rev=1188155&r1=1188154&r2=1188155&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_mergeinfo_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_mergeinfo_private.h Mon Oct 24 14:36:46 2011
@@ -138,11 +138,11 @@ svn_mergeinfo__relpaths_to_urls(apr_hash
                                 apr_pool_t *result_pool,
                                 apr_pool_t *scratch_pool);
 
-/* Set *OUT_MERGEINFO to a deep copy of MERGEINFO with the relpath
+/* Set *OUT_MERGEINFO to a shallow copy of MERGEINFO with the relpath
    SUFFIX_RELPATH added to the end of each key path.
 
-   Allocate *OUT_MERGEINFO in RESULT_POOL.  Use SCRATCH_POOL for any
-   temporary allocations. */
+   Allocate *OUT_MERGEINFO and the new keys in RESULT_POOL.  Use
+   SCRATCH_POOL for any temporary allocations. */
 svn_error_t *
 svn_mergeinfo__add_suffix_to_mergeinfo(svn_mergeinfo_t *out_mergeinfo,
                                        svn_mergeinfo_t mergeinfo,

Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1188155&r1=1188154&r2=1188155&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Mon Oct 24 14:36:46 2011
@@ -3520,7 +3520,7 @@ get_full_mergeinfo(svn_mergeinfo_t *reco
 
    Set CHILD->IMPLICIT_MERGEINFO to the mergeinfo inherited from
    PARENT->IMPLICIT_MERGEINFO.  CHILD->IMPLICIT_MERGEINFO is allocated
-   in POOL.
+   in RESULT_POOL.
    */
 static svn_error_t *
 inherit_implicit_mergeinfo_from_parent(svn_client__merge_path_t *parent,
@@ -3560,6 +3560,8 @@ inherit_implicit_mergeinfo_from_parent(s
   SVN_ERR(svn_client__adjust_mergeinfo_source_paths(
     child->implicit_mergeinfo, path_diff,
     parent->implicit_mergeinfo, result_pool));
+  child->implicit_mergeinfo = svn_mergeinfo_dup(child->implicit_mergeinfo,
+                                                result_pool);
   return SVN_NO_ERROR;
 }
 

Modified: subversion/trunk/subversion/libsvn_client/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/mergeinfo.c?rev=1188155&r1=1188154&r2=1188155&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/mergeinfo.c (original)
+++ subversion/trunk/subversion/libsvn_client/mergeinfo.c Mon Oct 24 14:36:46 2011
@@ -148,7 +148,6 @@ svn_client__adjust_mergeinfo_source_path
 {
   apr_hash_index_t *hi;
   const char *path;
-  apr_array_header_t *copied_rangelist;
 
   SVN_ERR_ASSERT(adjusted_mergeinfo);
   SVN_ERR_ASSERT(mergeinfo);
@@ -161,9 +160,8 @@ svn_client__adjust_mergeinfo_source_path
       /* Copy inherited mergeinfo into our output hash, adjusting the
          merge source as appropriate. */
       path = svn_fspath__join(merge_source, rel_path, pool);
-      copied_rangelist = svn_rangelist_dup(rangelist, pool);
       apr_hash_set(adjusted_mergeinfo, path, APR_HASH_KEY_STRING,
-                   copied_rangelist);
+                   rangelist);
     }
   return SVN_NO_ERROR;
 }

Modified: subversion/trunk/subversion/libsvn_subr/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/mergeinfo.c?rev=1188155&r1=1188154&r2=1188155&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/mergeinfo.c (original)
+++ subversion/trunk/subversion/libsvn_subr/mergeinfo.c Mon Oct 24 14:36:46 2011
@@ -2230,7 +2230,7 @@ svn_mergeinfo__add_suffix_to_mergeinfo(s
       apr_hash_set(*out_mergeinfo,
                    svn_dirent_join(path, suffix_relpath, result_pool),
                    APR_HASH_KEY_STRING,
-                   svn_rangelist_dup(rangelist, result_pool));
+                   rangelist);
     }
 
   return SVN_NO_ERROR;