Stefan Küng <tortoise...@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