You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2013/11/04 15:31:10 UTC

svn commit: r1538623 - /subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c

Author: rhuijben
Date: Mon Nov  4 14:31:09 2013
New Revision: 1538623

URL: http://svn.apache.org/r1538623
Log:
Properly reset an sqlite statement to avoid an abort() in a testcase that
I'm working on. This error can happen when a move node is already involved
in a different tree conflict.

* subversion/libsvn_wc/wc_db_update_move.c
  (resolve_delete_raise_moved_away): Reset sql statement when adding a
    conflict fails.

Modified:
    subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c

Modified: subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c?rev=1538623&r1=1538622&r2=1538623&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c Mon Nov  4 14:31:09 2013
@@ -2337,6 +2337,7 @@ resolve_delete_raise_moved_away(svn_wc__
   SVN_ERR(svn_sqlite__step(&have_row, stmt));
   while(have_row)
     {
+      svn_error_t *err;
       const char *moved_relpath = svn_sqlite__column_text(stmt, 0, NULL);
       const char *move_root_dst_relpath = svn_sqlite__column_text(stmt, 1,
                                                                   NULL);
@@ -2344,15 +2345,18 @@ resolve_delete_raise_moved_away(svn_wc__
                                                                     NULL);
       svn_pool_clear(iterpool);
 
-      SVN_ERR(mark_tree_conflict(moved_relpath,
-                                 wcroot, db, old_version, new_version,
-                                 move_root_dst_relpath, operation,
-                                 svn_node_dir /* ### ? */,
-                                 svn_node_dir /* ### ? */,
-                                 moved_dst_repos_relpath,
-                                 svn_wc_conflict_reason_moved_away,
-                                 action, local_relpath,
-                                 iterpool));
+      err = mark_tree_conflict(moved_relpath,
+                               wcroot, db, old_version, new_version,
+                               move_root_dst_relpath, operation,
+                               svn_node_dir /* ### ? */,
+                               svn_node_dir /* ### ? */,
+                               moved_dst_repos_relpath,
+                               svn_wc_conflict_reason_moved_away,
+                               action, local_relpath,
+                               iterpool);
+
+      if (err)
+        return svn_error_compose_create(err, svn_sqlite__reset(stmt));
 
       SVN_ERR(svn_sqlite__step(&have_row, stmt));
     }