Index: subversion/libsvn_fs_fs/tree.c =================================================================== --- subversion/libsvn_fs_fs/tree.c (revision 1526121) +++ subversion/libsvn_fs_fs/tree.c (working copy) @@ -2423,8 +2423,6 @@ svn_fs_root_t *copy_from_root1, *copy_from_root2; const char *copy_from_path1, *copy_from_path2; - *changed = TRUE; - SVN_ERR(svn_fs_fs__revision_root(&rev_root, root->fs, revision, pool)); /* Get the NODE for FROM_PATH in FROM_ROOT.*/ @@ -2434,7 +2432,10 @@ /* different ID -> got changed*/ if (!svn_fs_fs__id_eq(svn_fs_fs__dag_get_id(node), svn_fs_fs__dag_get_id(rev_node))) - return SVN_NO_ERROR; + { + *changed = TRUE; + return SVN_NO_ERROR; + } /* some node. might still be a lazy copy */ SVN_ERR(fs_closest_copy(©_from_root1, ©_from_path1, root, @@ -2442,16 +2443,22 @@ SVN_ERR(fs_closest_copy(©_from_root2, ©_from_path2, rev_root, path, pool)); - if ((copy_from_root1 == NULL) != (copy_from_root2 == NULL)) - return SVN_NO_ERROR; - - if (copy_from_root1) - if ( copy_from_root1->rev != copy_from_root2->rev - || strcmp(copy_from_path1, copy_from_path2)) + if (copy_from_root1 == NULL && copy_from_root2 == NULL) + { + *changed = FALSE; return SVN_NO_ERROR; - - *changed = FALSE; - return SVN_NO_ERROR; + } + else if (copy_from_root1 != NULL && copy_from_root2 != NULL) + { + *changed = (copy_from_root1->rev != copy_from_root2->rev) + || strcmp(copy_from_path1, copy_from_path2); + return SVN_NO_ERROR; + } + else + { + *changed = TRUE; + return SVN_NO_ERROR; + } }