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