Stefan Küng <tortoisesvn_at_gmail.com> writes:
> I'm going through some crash reports sent for TSVN and I found a crash
> that happens when committing, and the wc has some incomplete entries:
>
> libsvn_wc/node.c, svn_wc__internal_get_origin().
>
> SVN_ERR(svn_wc__db_scan_addition(&status, &op_root_abspath, NULL,
> NULL, NULL, &original_repos_relpath,
> repos_root_url,
> repos_uuid, revision, NULL, NULL,
> db, local_abspath,
> result_pool, scratch_pool));
>
> if (status == svn_wc__db_status_added)
> {
> if (is_copy)
> *is_copy = FALSE;
> return SVN_NO_ERROR; /* Local addition */
> }
>
> *repos_relpath = svn_relpath_join(
> original_repos_relpath,
> svn_dirent_skip_ancestor(op_root_abspath,
> local_abspath),
> result_pool);
>
>
> when the status is svn_wc__db_status_incomplete, the
> original_repos_relpath can be NULL, and then the svn_relpath_join()
> crashes because of a null-pointer access.
scan_addition implies the node must be added, and for that to be
incomplete it must be the result of an interrupted wc-to-wc copy.
$ svn st wc
A + wc/X
! wc/X/B/C
! wc/X/B/f
In that state a simple commit doesn't trigger a bug, but then it doesn't
call svn_wc__internal_get_origin either. I see commit_util.c has calls
to svn_wc__node_get_orig, which calls svn_wc__internal_get_origin, so I
suppose that must be how it gets called, but I don't know what sort of
commit to run to see the bug. How does TortoiseSVN commit such a tree?
--
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com
Received on 2012-03-09 20:07:01 CET