You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2011/10/18 15:41:48 UTC

svn commit: r1185649 - in /subversion/trunk/subversion: include/svn_mergeinfo.h libsvn_subr/deprecated.c libsvn_subr/mergeinfo.c

Author: hwright
Date: Tue Oct 18 13:41:48 2011
New Revision: 1185649

URL: http://svn.apache.org/viewvc?rev=1185649&view=rev
Log:
Rev svn_mergeinfo_diff() to allow it to take a scratch_pool.

* subversion/include/svn_mergeinfo.h
  (svn_mergeinfo_diff2): New.
  (svn_mergeinfo_diff): Deprecated.

* subversion/libsvn_subr/deprecated.c
  (svn_mergeinfo_diff): New wrapper function.

* subversion/libsvn_subr/mergeinfo.c
  (svn_mergeinfo_diff2): New, now with better pool management!

Modified:
    subversion/trunk/subversion/include/svn_mergeinfo.h
    subversion/trunk/subversion/libsvn_subr/deprecated.c
    subversion/trunk/subversion/libsvn_subr/mergeinfo.c

Modified: subversion/trunk/subversion/include/svn_mergeinfo.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_mergeinfo.h?rev=1185649&r1=1185648&r2=1185649&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_mergeinfo.h (original)
+++ subversion/trunk/subversion/include/svn_mergeinfo.h Tue Oct 18 13:41:48 2011
@@ -167,7 +167,8 @@ svn_mergeinfo_parse(svn_mergeinfo_t *mer
 
 /** Calculate the delta between two mergeinfos, @a mergefrom and @a mergeto
  * (which may be @c NULL), and place the result in @a *deleted and @a
- * *added (neither output argument may be @c NULL).
+ * *added (neither output argument may be @c NULL), both allocated in @a
+ * result_pool.
  *
  * @a consider_inheritance determines how the rangelists in the two
  * hashes are compared for equality.  If @a consider_inheritance is FALSE,
@@ -184,8 +185,21 @@ svn_mergeinfo_parse(svn_mergeinfo_t *mer
  *       '/trunk: 1,3-4*,5' == '/trunk: 1,3-4*,5'
  *       '/trunk: 1,3-4,5'  == '/trunk: 1,3-4,5'
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_mergeinfo_diff2(svn_mergeinfo_t *deleted, svn_mergeinfo_t *added,
+                    svn_mergeinfo_t mergefrom, svn_mergeinfo_t mergeto,
+                    svn_boolean_t consider_inheritance,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool);
+
+/** Similar to svn_mergeinfo_diff2(), but users only one pool.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.5.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_mergeinfo_diff(svn_mergeinfo_t *deleted, svn_mergeinfo_t *added,
                    svn_mergeinfo_t mergefrom, svn_mergeinfo_t mergeto,

Modified: subversion/trunk/subversion/libsvn_subr/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/deprecated.c?rev=1185649&r1=1185648&r2=1185649&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/deprecated.c (original)
+++ subversion/trunk/subversion/libsvn_subr/deprecated.c Tue Oct 18 13:41:48 2011
@@ -1083,6 +1083,17 @@ svn_rangelist_merge(apr_array_header_t *
 }
 
 svn_error_t *
+svn_mergeinfo_diff(svn_mergeinfo_t *deleted, svn_mergeinfo_t *added,
+                   svn_mergeinfo_t from, svn_mergeinfo_t to,
+                   svn_boolean_t consider_inheritance,
+                   apr_pool_t *pool)
+{
+  return svn_error_trace(svn_mergeinfo_diff2(deleted, added, from, to,
+                                             consider_inheritance, pool,
+                                             pool));
+}
+
+svn_error_t *
 svn_mergeinfo_merge(svn_mergeinfo_t mergeinfo,
                     svn_mergeinfo_t changes,
                     apr_pool_t *pool)

Modified: subversion/trunk/subversion/libsvn_subr/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/mergeinfo.c?rev=1185649&r1=1185648&r2=1185649&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/mergeinfo.c (original)
+++ subversion/trunk/subversion/libsvn_subr/mergeinfo.c Tue Oct 18 13:41:48 2011
@@ -1598,31 +1598,32 @@ walk_mergeinfo_hash_for_diff(svn_mergein
 }
 
 svn_error_t *
-svn_mergeinfo_diff(svn_mergeinfo_t *deleted, svn_mergeinfo_t *added,
-                   svn_mergeinfo_t from, svn_mergeinfo_t to,
-                   svn_boolean_t consider_inheritance,
-                   apr_pool_t *pool)
+svn_mergeinfo_diff2(svn_mergeinfo_t *deleted, svn_mergeinfo_t *added,
+                    svn_mergeinfo_t from, svn_mergeinfo_t to,
+                    svn_boolean_t consider_inheritance,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool)
 {
   if (from && to == NULL)
     {
-      *deleted = svn_mergeinfo_dup(from, pool);
-      *added = apr_hash_make(pool);
+      *deleted = svn_mergeinfo_dup(from, result_pool);
+      *added = apr_hash_make(result_pool);
     }
   else if (from == NULL && to)
     {
-      *deleted = apr_hash_make(pool);
-      *added = svn_mergeinfo_dup(to, pool);
+      *deleted = apr_hash_make(result_pool);
+      *added = svn_mergeinfo_dup(to, result_pool);
     }
   else
     {
-      *deleted = apr_hash_make(pool);
-      *added = apr_hash_make(pool);
+      *deleted = apr_hash_make(result_pool);
+      *added = apr_hash_make(result_pool);
 
       if (from && to)
         {
           SVN_ERR(walk_mergeinfo_hash_for_diff(from, to, *deleted, *added,
-                                               consider_inheritance, pool,
-                                               pool));
+                                               consider_inheritance,
+                                               result_pool, scratch_pool));
         }
     }
 
@@ -1639,8 +1640,8 @@ svn_mergeinfo__equals(svn_boolean_t *is_
   if (apr_hash_count(info1) == apr_hash_count(info2))
     {
       svn_mergeinfo_t deleted, added;
-      SVN_ERR(svn_mergeinfo_diff(&deleted, &added, info1, info2,
-                                 consider_inheritance, pool));
+      SVN_ERR(svn_mergeinfo_diff2(&deleted, &added, info1, info2,
+                                  consider_inheritance, pool, pool));
       *is_equal = apr_hash_count(deleted) == 0 && apr_hash_count(added) == 0;
     }
   else



Re: svn commit: r1185649 - in /subversion/trunk/subversion: include/svn_mergeinfo.h libsvn_subr/deprecated.c libsvn_subr/mergeinfo.c

Posted by Greg Stein <gs...@gmail.com>.
On Tue, Oct 18, 2011 at 09:41,  <hw...@apache.org> wrote:
>...
> +++ subversion/trunk/subversion/libsvn_subr/mergeinfo.c Tue Oct 18 13:41:48 2011
>...
> @@ -1639,8 +1640,8 @@ svn_mergeinfo__equals(svn_boolean_t *is_
>   if (apr_hash_count(info1) == apr_hash_count(info2))
>     {
>       svn_mergeinfo_t deleted, added;
> -      SVN_ERR(svn_mergeinfo_diff(&deleted, &added, info1, info2,
> -                                 consider_inheritance, pool));
> +      SVN_ERR(svn_mergeinfo_diff2(&deleted, &added, info1, info2,
> +                                  consider_inheritance, pool, pool));
>       *is_equal = apr_hash_count(deleted) == 0 && apr_hash_count(added) == 0;
>     }

This change is not mentioned in the log message.

Cheers,
-g