Hi,

It seems that we introduced a bug in the interactive conflict resolver
in 1.8 (and later) that is a regression vs. 1.7. It segfaults on a NULL
pointer for conflicts in binary files.

>From what I could find out is that for binary files, the conflict resolver
description doesn't actually set the IS_BINARY flag but that doesn't
seem to be the core problem. Rather, the conflict skel does not provide
a path for the local modification and the MY_ABSPATH element in
the descriptor remains NULL and causes the segfault.

The attached script demonstrates the problem and the .patch file
provided a workaround that is not a proper fix. Select either "df" or
"m" at the 'resolve' prompt.

-- Stefan^2.
Index: subversion/svn/conflict-callbacks.c
===================================================================
--- subversion/svn/conflict-callbacks.c	(revision 1643589)
+++ subversion/svn/conflict-callbacks.c	(working copy)
@@ -714,9 +714,12 @@ handle_text_conflict(svn_wc_conflict_res
       *next_option++ = "p";
       if (diff_allowed)
         {
-          *next_option++ = "df";
+          if (desc->my_abspath)
+            *next_option++ = "df";
+
           *next_option++ = "e";
-          *next_option++ = "m";
+          if (desc->my_abspath)
+            *next_option++ = "m";
 
           if (knows_something)
             *next_option++ = "r";

Attachment: conflict-crash.sh
Description: Bourne shell script

Reply via email to