Uploaded image for project: 'Subversion'
  1. Subversion
  2. SVN-2971

Reverse merge of prop add segfaults if merging to parent of first merge

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Duplicate
    • trunk
    • 1.5.0
    • libsvn_wc
    • None

    Description

      svn merge segfaults in the following situation:
      
      1) Start with a vanilla greek tree
      
      2) Copy A to A_COPY in r2
      
      3) Set a property on A/D/G in r3
      
      4) Merge -c3 to A_COPY/D/G
      
      5) Merge -c-3 to A_COPY/D - segfault in
      libsvn_subr:svn_string.c:svn_string_compare().  It's worth noting that a merge
      -c-3 to A_COPY/D/G works fine.
      
      Looks like the problem is around line 1659 in
      libsvn_wc:propc.c:svn_wc__merge_props()
      
      1652      /* We already know that state is at least `changed', so mark
      1653         that, but remember that we may later upgrade to `merged' or
      1654         even `conflicted'. */
      1655      if (is_normal)
      1656        set_prop_merge_state(state, svn_wc_notify_state_changed);
      1657
      1658      if (! from_val)  /* adding a new property */
      1659        SVN_ERR(apply_single_prop_add(is_normal ? state : NULL,
      1660                                      working_props, &conflict,
      1661                                      propname, base_val, to_val,
      1662                                      conflict_func, conflict_baton, pool));
                  ^^^
                from_val is NULL, but so is to_val,
                which apply_single_prop_add() doesn't handle
                (not that we are adding a prop anyhow!).
      1663
      1664      else if (! to_val) /* delete an existing property */
      1665        SVN_ERR(apply_single_prop_delete(is_normal ? state : NULL,
      1666                                         working_props, &conflict,
      1667                                         propname, base_val, from_val,
      1668                                         conflict_func, conflict_baton, pool));
      1669
      1670      else  /* changing an existing property */
      1671        SVN_ERR(apply_single_prop_change(is_normal ? state : NULL,
      1672                                         working_props, &conflict,
      1673                                         propname, base_val, from_val, to_val,
      1674                                         conflict_func, conflict_baton, pool));
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              pburba Paul Burba
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: