On Mon, Nov 23, 2009 at 11:32:51AM +0530, Kannan wrote:
> [[[
> Log:
> Make a proper fix to resolve some deprecation warnings using
> `svn_path_url_add_component2()' by canonicalizing the base before
> passing to the above method; and a minor indentation fix.
> 
> [in subversion/libsvn_ra_neon]
> 
> * commit.c
>  (get_version_url, create_activity, commit_add_dir, commit_add_file
>   commit_close_file, add_child): Use `svn_path_url_add_component2()'.
>  (commit_delete_entry): Use `svn_path_url_add_component2()' and a minor
>   indentation fix in comment.
>  (svn_ra_neon__get_commit_editor, checkout_resource): Canonicalize the
>   base before passing to `svn_path_url_add_component2()'.
> 
> * props.c
>  (svn_ra_neon__get_baseline_info): Canonicalize the base before passing
>   to `svn_path_url_add_component2()'.
> 
> Patch by: Kannan R <kann...@collab.net>
> ]]]

Sorry for the delay.

> Index: ../../subversion/libsvn_ra_neon/commit.c
> ===================================================================
> --- ../../subversion/libsvn_ra_neon/commit.c  (revision 882427)
> +++ ../../subversion/libsvn_ra_neon/commit.c  (working copy)

> @@ -519,6 +519,12 @@
>      }
>  
>    rsrc->wr_url = apr_pstrdup(rsrc->pool, parse.path);
> +
> +  /* Canonicalize the base here as `svn_path_url_add_component2()'
> +     won't handle it */
> +  rsrc->vsn_url = svn_uri_canonicalize(rsrc->vsn_url, pool);
> +  rsrc->wr_url = svn_uri_canonicalize(rsrc->wr_url, pool);

Canonicalising in place looks suspicous. Why do we let these
strings run around in non-canonicalised form for a while, and then
later canonicalise them?  There is code above these lines that also
uses rsrc->vsn_url, for instance.
Isn't it possible to canonicalise these strings earlier, when rsrc
is allocated and initialised?

> Index: ../../subversion/libsvn_ra_neon/props.c
> ===================================================================
> --- ../../subversion/libsvn_ra_neon/props.c   (revision 882427)
> +++ ../../subversion/libsvn_ra_neon/props.c   (working copy)
> @@ -991,7 +991,12 @@
>  
>    /* maybe return bc_url to the caller */
>    if (bc_url)
> -    *bc_url = *my_bc_url;
> +    {
> +      /* Canonicalize the base here as `svn_path_url_add_component2()'
> +         won't handle it */
> +      bc_url->data = svn_uri_canonicalize(my_bc_url->data, pool);
> +      bc_url->len = my_bc_url->len;

Here, my_bc_url() comes from svn_ra_neon__get_baseline_props().
Why doesn't svn_ra_neon__get_baseline_props() canonicalise its result?

Thanks,
Stefan

Reply via email to