You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by gs...@apache.org on 2010/04/23 06:45:53 UTC
svn commit: r937152 - /subversion/trunk/subversion/libsvn_wc/entries.c
Author: gstein
Date: Fri Apr 23 04:45:52 2010
New Revision: 937152
URL: http://svn.apache.org/viewvc?rev=937152&view=rev
Log:
Be wary of calling svn_wc__db_scan_addition for an obstructed_add node.
Jury-rig some values to deal with the lack of a scan.
(ignore the lack of proper indentation; future revision)
* subversion/libsvn_wc/entries.c:
(read_one_entry): if the node is an obstructed_add, then take particular
care to avoid a scan_addition (since it is missing needed data).
Modified:
subversion/trunk/subversion/libsvn_wc/entries.c
Modified: subversion/trunk/subversion/libsvn_wc/entries.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/entries.c?rev=937152&r1=937151&r2=937152&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/entries.c (original)
+++ subversion/trunk/subversion/libsvn_wc/entries.c Fri Apr 23 04:45:52 2010
@@ -808,6 +808,18 @@ read_one_entry(const svn_wc_entry_t **ne
}
}
+ /* If we don't have "real" data from the entry (obstruction),
+ then we cannot begin a scan for data. The original node may
+ have important data. Set up stuff to kill that idea off,
+ and finish up this entry. */
+ if (status == svn_wc__db_status_obstructed_add)
+ {
+ entry->cmt_rev = SVN_INVALID_REVNUM;
+ work_status = svn_wc__db_status_normal;
+ scanned_original_relpath = NULL;
+ }
+ else
+ {
SVN_ERR(svn_wc__db_scan_addition(&work_status,
&op_root_abspath,
&repos_relpath,
@@ -819,6 +831,7 @@ read_one_entry(const svn_wc_entry_t **ne
db,
entry_abspath,
result_pool, iterpool));
+ }
if (!SVN_IS_VALID_REVNUM(entry->cmt_rev)
&& scanned_original_relpath == NULL)
@@ -1053,6 +1066,7 @@ read_one_entry(const svn_wc_entry_t **ne
SVN_ERR_ASSERT(repos_relpath != NULL
|| entry->schedule == svn_wc_schedule_delete
|| status == svn_wc__db_status_obstructed
+ || status == svn_wc__db_status_obstructed_add
|| status == svn_wc__db_status_obstructed_delete
|| status == svn_wc__db_status_not_present
|| status == svn_wc__db_status_absent