We have helper functions for this scenario (svn_uri__*()) that also perform the 
required escaping rules (required for url, but not for relpath)

        Bert

-----Original Message-----
From: Stefan Sperling <s...@elego.de> 
Sent: Monday, December 6, 2021 9:31 AM
To: Nathan Hartman <hartman.nat...@gmail.com>
Cc: Subversion Developers <dev@subversion.apache.org>
Subject: Re: Fwd: Can't create temporary file from template ... No such file or 
directory

On Sun, Dec 05, 2021 at 11:21:48PM -0500, Nathan Hartman wrote:
> On Sun, Dec 5, 2021 at 12:55 PM James McCoy <james...@jamessan.com> wrote:
> >
> > On Sun, Dec 05, 2021 at 12:41:30PM -0500, Nathan Hartman wrote:
> > > It's not dumping core on mine. I would like to debug this properly 
> > > but am running into various nonsense. For example, I haven't 
> > > figured out how to run it under gdb since svn is being called 
> > > through the libtool script;
> >
> > "libtool exec gdb ./subversion/svn ..." will run svn with the 
> > environment setup properly.
> 
> Perfect. That's the clue I needed. Thanks, James.
> 
> At diff_dir_added() at libsvn_client/conflicts.c:7570 (in current 
> trunk, r1895609) we are attempting to concat some path components
> with:
> 
>   copyfrom_url = apr_pstrcat(scratch_pool, b->repos_root_url, "/",
>                              right_source->repos_relpath, 
> SVN_VA_NULL);
> 
> However, right_source->repos_relpath is an empty string, so we end up 
> with b->repos_root_url plus a trailing slash, causing the path to 
> become non-canonical.
> 
> The fix might be as simple as checking for that and not calling 
> apr_pstrcat(), but I would like to dig a little more before jumping to 
> conclusions.

Thanks, Nathan. I see this is in the conflict resolver so this is probably code 
I have written. But I won't snag this away from you. And if you need any help, 
just let me know. (I have not yet looked into details; I suspect that 
right_source might be bogus or simply invalid?)

Cheers,
Stefan

Reply via email to