summaryrefslogtreecommitdiffstats
path: root/subversion/libsvn_wc/wc_db.c
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/libsvn_wc/wc_db.c')
-rw-r--r--subversion/libsvn_wc/wc_db.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/subversion/libsvn_wc/wc_db.c b/subversion/libsvn_wc/wc_db.c
index 81056c9..ed59d4c 100644
--- a/subversion/libsvn_wc/wc_db.c
+++ b/subversion/libsvn_wc/wc_db.c
@@ -3815,8 +3815,15 @@ cross_db_copy(svn_wc__db_wcroot_t *src_wcroot,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
src_wcroot, src_relpath, scratch_pool, scratch_pool));
- SVN_ERR(db_read_pristine_props(&props, src_wcroot, src_relpath, FALSE,
- scratch_pool, scratch_pool));
+ if (dst_status != svn_wc__db_status_not_present
+ && dst_status != svn_wc__db_status_excluded
+ && dst_status != svn_wc__db_status_server_excluded)
+ {
+ SVN_ERR(db_read_pristine_props(&props, src_wcroot, src_relpath, FALSE,
+ scratch_pool, scratch_pool));
+ }
+ else
+ props = NULL;
blank_iwb(&iwb);
iwb.presence = dst_status;
@@ -5131,6 +5138,17 @@ db_op_copy_shadowed_layer(svn_wc__db_wcroot_t *src_wcroot,
scratch_pool));
}
+ if (dst_presence == svn_wc__db_status_not_present)
+ {
+ /* Don't create descendants of a not present node! */
+
+ /* This code is currently still triggered by copying deleted nodes
+ between separate working copies. See ### comment above. */
+
+ svn_pool_destroy(iterpool);
+ return SVN_NO_ERROR;
+ }
+
SVN_ERR(gather_repo_children(&children, src_wcroot, src_relpath,
src_op_depth, scratch_pool, iterpool));
OpenPOWER on IntegriCloud