subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hwri...@apache.org
Subject svn commit: r1162107 - in /subversion/branches/1.7.x: ./ STATUS subversion/libsvn_wc/entries.c subversion/svn/info-cmd.c subversion/tests/cmdline/info_tests.py
Date Fri, 26 Aug 2011 13:18:08 GMT
Author: hwright
Date: Fri Aug 26 13:18:07 2011
New Revision: 1162107

URL: http://svn.apache.org/viewvc?rev=1162107&view=rev
Log:
Merge r1162024, r1162033 from trunk:

 * r1162024, r1162033
   Resolve segfault on retrieving svn_wc_entry_t or calling 'svn info' on a
   binary conflict.
   Justification:
     svn info shouldn't crash on a simple (binary) conflict.
   Notes:
     r1162024 is a test reproducing the segfault. r1162033 fixes both issues
     and possibly a few harder to reproduce variants.
     There is a trivial text conflict on the blank line above the newly added
     test. An empty line was removed in r1151015, theirs-on-conflict handles
     this properly.
   Votes:
     +1: rhuijben, danielsh, philip

Modified:
    subversion/branches/1.7.x/   (props changed)
    subversion/branches/1.7.x/STATUS
    subversion/branches/1.7.x/subversion/libsvn_wc/entries.c
    subversion/branches/1.7.x/subversion/svn/info-cmd.c
    subversion/branches/1.7.x/subversion/tests/cmdline/info_tests.py

Propchange: subversion/branches/1.7.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Aug 26 13:18:07 2011
@@ -61,4 +61,4 @@
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
 /subversion/branches/uris-as-urls:1060426-1064427
-/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148853,1148877,1148882,1148936,1149105,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,1156085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158187,115
 8193-1158194,1158196,1158201,1158207,1158209-1158210,1158217,1158285,1158288,1158303,1158309,1158407,1158419,1158421,1158436,1158455,1158616-1158617,1158634,1158854,1158875,1158886,1158893,1158896,1158919,1158924,1158963,1159093,1159098,1159101,1159132,1159136,1159148,1159230,1159275,1159400,1159686,1159760,1159772,1160605,1160671,1160682,1160704-1160705,1160756,1161080,1161185
+/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148853,1148877,1148882,1148936,1149105,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,1156085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158187,115
 8193-1158194,1158196,1158201,1158207,1158209-1158210,1158217,1158285,1158288,1158303,1158309,1158407,1158419,1158421,1158436,1158455,1158616-1158617,1158634,1158854,1158875,1158886,1158893,1158896,1158919,1158924,1158963,1159093,1159098,1159101,1159132,1159136,1159148,1159230,1159275,1159400,1159686,1159760,1159772,1160605,1160671,1160682,1160704-1160705,1160756,1161080,1161185,1162024,1162033

Modified: subversion/branches/1.7.x/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1162107&r1=1162106&r2=1162107&view=diff
==============================================================================
--- subversion/branches/1.7.x/STATUS (original)
+++ subversion/branches/1.7.x/STATUS Fri Aug 26 13:18:07 2011
@@ -79,17 +79,3 @@ Veto-blocked changes:
 
 Approved changes:
 =================
-
- * r1162024, r1162033
-   Resolve segfault on retrieving svn_wc_entry_t or calling 'svn info' on a
-   binary conflict.
-   Justification:
-     svn info shouldn't crash on a simple (binary) conflict.
-   Notes:
-     r1162024 is a test reproducing the segfault. r1162033 fixes both issues
-     and possibly a few harder to reproduce variants.
-     There is a trivial text conflict on the blank line above the newly added
-     test. An empty line was removed in r1151015, theirs-on-conflict handles
-     this properly.
-   Votes:
-     +1: rhuijben, danielsh, philip

Modified: subversion/branches/1.7.x/subversion/libsvn_wc/entries.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_wc/entries.c?rev=1162107&r1=1162106&r2=1162107&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/libsvn_wc/entries.c (original)
+++ subversion/branches/1.7.x/subversion/libsvn_wc/entries.c Fri Aug 26 13:18:07 2011
@@ -892,12 +892,15 @@ read_one_entry(const svn_wc_entry_t **ne
           switch (cd->kind)
             {
             case svn_wc_conflict_kind_text:
-              entry->conflict_old = svn_dirent_basename(cd->base_abspath,
-                                                        result_pool);
-              entry->conflict_new = svn_dirent_basename(cd->their_abspath,
-                                                        result_pool);
-              entry->conflict_wrk = svn_dirent_basename(cd->my_abspath,
-                                                        result_pool);
+              if (cd->base_abspath)
+                entry->conflict_old = svn_dirent_basename(cd->base_abspath,
+                                                          result_pool);
+              if (cd->their_abspath)
+                entry->conflict_new = svn_dirent_basename(cd->their_abspath,
+                                                          result_pool);
+              if (cd->my_abspath)
+                entry->conflict_wrk = svn_dirent_basename(cd->my_abspath,
+                                                          result_pool);
               break;
             case svn_wc_conflict_kind_property:
               entry->prejfile = svn_dirent_basename(cd->their_abspath,

Modified: subversion/branches/1.7.x/subversion/svn/info-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/svn/info-cmd.c?rev=1162107&r1=1162106&r2=1162107&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/svn/info-cmd.c (original)
+++ subversion/branches/1.7.x/subversion/svn/info-cmd.c Fri Aug 26 13:18:07 2011
@@ -417,20 +417,26 @@ print_info(void *baton,
               switch (conflict->kind)
                 {
                   case svn_wc_conflict_kind_text:
-                    SVN_ERR(svn_cmdline_printf(pool,
-                              _("Conflict Previous Base File: %s\n"),
-                              svn_dirent_local_style(conflict->base_abspath,
-                                                     pool)));
-
-                    SVN_ERR(svn_cmdline_printf(pool,
-                              _("Conflict Previous Working File: %s\n"),
-                              svn_dirent_local_style(conflict->my_abspath,
-                                                     pool)));
-
-                    SVN_ERR(svn_cmdline_printf(pool,
-                              _("Conflict Current Base File: %s\n"),
-                              svn_dirent_local_style(conflict->their_abspath,
-                                                     pool)));
+                    if (conflict->base_abspath)
+                      SVN_ERR(svn_cmdline_printf(pool,
+                                _("Conflict Previous Base File: %s\n"),
+                                svn_cl__local_style_skip_ancestor(
+                                        path_prefix, conflict->base_abspath,
+                                        pool)));
+
+                    if (conflict->my_abspath)
+                      SVN_ERR(svn_cmdline_printf(pool,
+                                _("Conflict Previous Working File: %s\n"),
+                                svn_cl__local_style_skip_ancestor(
+                                        path_prefix, conflict->my_abspath,
+                                        pool)));
+
+                    if (conflict->their_abspath)
+                      SVN_ERR(svn_cmdline_printf(pool,
+                                _("Conflict Current Base File: %s\n"),
+                                svn_cl__local_style_skip_ancestor(
+                                        path_prefix, conflict->their_abspath,
+                                        pool)));
                   break;
 
                   case svn_wc_conflict_kind_property:

Modified: subversion/branches/1.7.x/subversion/tests/cmdline/info_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/tests/cmdline/info_tests.py?rev=1162107&r1=1162106&r2=1162107&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/tests/cmdline/info_tests.py (original)
+++ subversion/branches/1.7.x/subversion/tests/cmdline/info_tests.py Fri Aug 26 13:18:07 2011
@@ -482,6 +482,42 @@ def info_show_exclude(sbox):
        'svn: E200009: Could not display info for all targets.*',
         'info', iota)
 
+@Issue(3998)
+def binary_tree_conflict(sbox):
+  "svn info shouldn't crash on conflict"
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  sbox.simple_propset('svn:mime-type', 'binary/octet-stream', 'iota')
+  sbox.simple_commit()
+
+  iota = sbox.ospath('iota')
+
+  svntest.main.file_write(iota, 'something-else')
+  sbox.simple_commit()
+
+  svntest.main.file_write(iota, 'third')
+
+  expected_output = svntest.wc.State(wc_dir, {
+    'iota' : Item(status='C '),
+    })
+  expected_status = svntest.wc.State(iota, {
+    '' : Item(status='C ', wc_rev='2')
+  })
+  svntest.actions.run_and_verify_update(iota,
+                                        expected_output, None, expected_status,
+                                        None, None, None, None, None, False,
+                                        iota, '-r', '2')
+
+  expected_info = [{
+      'Path' : '%s' % re.escape(iota),
+      'Conflict Previous Base File' : re.escape(iota + '.r3'),
+      'Conflict Current Base File' : re.escape(iota + '.r2'),
+  }]
+  svntest.actions.run_and_verify_info(expected_info, iota)
+
+
+
 
 ########################################################################
 # Run the tests
@@ -496,6 +532,7 @@ test_list = [ None,
               info_multiple_targets,
               info_repos_root_url,
               info_show_exclude,
+              binary_tree_conflict,
              ]
 
 if __name__ == '__main__':



Mime
View raw message