> -----Original Message-----
> From: julianf...@apache.org [mailto:julianf...@apache.org]
> Sent: maandag 22 november 2010 16:08
> To: comm...@subversion.apache.org
> Subject: svn commit: r1037748 - in /subversion/trunk/subversion:
> include/private/svn_mergeinfo_private.h libsvn_subr/mergeinfo.c
> 
> Author: julianfoad
> Date: Mon Nov 22 15:08:25 2010
> New Revision: 1037748
> 
> URL: http://svn.apache.org/viewvc?rev=1037748&view=rev
> Log:
> Simplify and remove ambiguity in a mergeinfo function.
> 
> * subversion/include/private/svn_mergeinfo_private.h,
>   subversion/libsvn_subr/mergeinfo.c
>   (svn_mergeinfo__add_suffix_to_mergeinfo): Require that the suffix is
> a
>     canonical relpath.
> 
> Modified:
>     subversion/trunk/subversion/include/private/svn_mergeinfo_private.h
>     subversion/trunk/subversion/libsvn_subr/mergeinfo.c
> 

<snip>

> Modified: subversion/trunk/subversion/libsvn_subr/mergeinfo.c
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/me
> rgeinfo.c?rev=1037748&r1=1037747&r2=1037748&view=diff
> =======================================================================
> =======
> --- subversion/trunk/subversion/libsvn_subr/mergeinfo.c (original)
> +++ subversion/trunk/subversion/libsvn_subr/mergeinfo.c Mon Nov 22
> 15:08:25 2010
> @@ -1809,33 +1809,28 @@ svn_mergeinfo__add_prefix_to_catalog(svn
>  svn_error_t *
>  svn_mergeinfo__add_suffix_to_mergeinfo(svn_mergeinfo_t *out_mergeinfo,
>                                         svn_mergeinfo_t mergeinfo,
> -                                       const char *suffix,
> +                                       const char *suffix_relpath,
>                                         apr_pool_t *result_pool,
>                                         apr_pool_t *scratch_pool)
>  {
> -  if (!suffix || svn_dirent_is_absolute(suffix))
> -    {
> -      *out_mergeinfo = svn_mergeinfo_dup(mergeinfo, result_pool);
> -    }
> -  else
> -    {
> -      apr_hash_index_t *hi;
> -      const char *canonical_suffix = svn_uri_canonicalize(suffix,
> -
> scratch_pool);
> -      *out_mergeinfo = apr_hash_make(result_pool);
> +  apr_hash_index_t *hi;
> 
> -      for (hi = apr_hash_first(scratch_pool, mergeinfo);
> -           hi;
> -           hi = apr_hash_next(hi))
> -        {
> -          const char *path = svn__apr_hash_index_key(hi);
> -          apr_array_header_t *rangelist = svn__apr_hash_index_val(hi);
> +  SVN_ERR_ASSERT(suffix_relpath &&
> svn_relpath_is_canonical(suffix_relpath,
> +
> scratch_pool));
> 
> -          apr_hash_set(*out_mergeinfo,
> -                       svn_dirent_join(path, canonical_suffix,
> result_pool),
> -                       APR_HASH_KEY_STRING,
> -                       svn_rangelist_dup(rangelist, result_pool));
> -        }
> +  *out_mergeinfo = apr_hash_make(result_pool);
> +
> +  for (hi = apr_hash_first(scratch_pool, mergeinfo);
> +       hi;
> +       hi = apr_hash_next(hi))
> +    {
> +      const char *path = svn__apr_hash_index_key(hi);
> +      apr_array_header_t *rangelist = svn__apr_hash_index_val(hi);
> +
> +      apr_hash_set(*out_mergeinfo,
> +                   svn_dirent_join(path, suffix_relpath, result_pool),
> +                   APR_HASH_KEY_STRING,
> +                   svn_rangelist_dup(rangelist, result_pool));

Path is not a dirent (a local disk path), so this should not use the dirent API.

I think this should use the new svn_fspath__ join. (Merge info contains a '/')

        Bert 


Reply via email to