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 <[email protected]>
Sent: Monday, December 6, 2021 9:31 AM
To: Nathan Hartman <[email protected]>
Cc: Subversion Developers <[email protected]>
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 <[email protected]> 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