You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2010/01/06 18:12:35 UTC

svn commit: r896547 - /subversion/branches/1.6.x-r896522/subversion/libsvn_wc/adm_ops.c

Author: pburba
Date: Wed Jan  6 17:12:30 2010
New Revision: 896547

URL: http://svn.apache.org/viewvc?rev=896547&view=rev
Log:
Fix segfault with 'svn resolve [mine-full | base | theirs-full]'.

Follow-up to r880533 on the ^/subversion/branches/1.6.x-r40452 branch.  This
bug no longer exists on trunk, so the change is being made directly on this
backport branch.  See http://svn.haxx.se/dev/archive-2010-01/0088.shtml for
a full discussion/explanation.

* subversion/libsvn_wc/adm_ops.c
 (resolve_conflict_on_entry): Don't try to join NULL paths.

Modified:
    subversion/branches/1.6.x-r896522/subversion/libsvn_wc/adm_ops.c

Modified: subversion/branches/1.6.x-r896522/subversion/libsvn_wc/adm_ops.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x-r896522/subversion/libsvn_wc/adm_ops.c?rev=896547&r1=896546&r2=896547&view=diff
==============================================================================
--- subversion/branches/1.6.x-r896522/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/branches/1.6.x-r896522/subversion/libsvn_wc/adm_ops.c Wed Jan  6 17:12:30 2010
@@ -2741,29 +2741,31 @@
 
   if (resolve_text)
     {
-      const char *auto_resolve_src;
+      const char *auto_resolve_src = NULL;
 
       /* Handle automatic conflict resolution before the temporary files are
        * deleted, if necessary. */
       switch (conflict_choice)
         {
         case svn_wc_conflict_choose_base:
-          auto_resolve_src = svn_path_join(
-                              svn_wc_adm_access_path(conflict_dir),
-                              entry->conflict_old, pool);
+          if (entry->conflict_old)
+            auto_resolve_src = svn_path_join(
+              svn_wc_adm_access_path(conflict_dir),
+              entry->conflict_old, pool);
           break;
         case svn_wc_conflict_choose_mine_full:
-          auto_resolve_src = svn_path_join(
-                              svn_wc_adm_access_path(conflict_dir),
-                              entry->conflict_wrk, pool);
+          if (entry->conflict_wrk)
+            auto_resolve_src = svn_path_join(
+              svn_wc_adm_access_path(conflict_dir),
+              entry->conflict_wrk, pool);
           break;
         case svn_wc_conflict_choose_theirs_full:
-          auto_resolve_src = svn_path_join(
-                              svn_wc_adm_access_path(conflict_dir),
-                              entry->conflict_new, pool);
+          if (entry->conflict_new)
+            auto_resolve_src = svn_path_join(
+              svn_wc_adm_access_path(conflict_dir),
+              entry->conflict_new, pool);
           break;
         case svn_wc_conflict_choose_merged:
-          auto_resolve_src = NULL;
           break;
         case svn_wc_conflict_choose_theirs_conflict:
         case svn_wc_conflict_choose_mine_conflict:
@@ -2828,8 +2830,6 @@
                                                     pool));
                 SVN_ERR(svn_stream_close(tmp_stream));
               }
-            else
-              auto_resolve_src = NULL;
             break;
           }
         default: