You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ka...@apache.org on 2010/12/31 17:16:08 UTC

svn commit: r1054133 - in /subversion/trunk/subversion: libsvn_wc/entries.c tests/cmdline/upgrade_tests.py

Author: kameshj
Date: Fri Dec 31 16:16:08 2010
New Revision: 1054133

URL: http://svn.apache.org/viewvc?rev=1054133&view=rev
Log:
Fix svn upgrade segfault when it upgrades a WC with items scheduled for
addition.

* subversion/libsvn_wc/entries.c
 (write_entry): When a item is scheduled its text_base_info is NULL, so 
  before dereferencing text_base_info check whether it is NULL or not.

* subversion/tests/cmdline/upgrade_tests.py
  (test_list): Remove XFail marker on 'upgrade_with_scheduled_change'.

Modified:
    subversion/trunk/subversion/libsvn_wc/entries.c
    subversion/trunk/subversion/tests/cmdline/upgrade_tests.py

Modified: subversion/trunk/subversion/libsvn_wc/entries.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/entries.c?rev=1054133&r1=1054132&r2=1054133&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/entries.c (original)
+++ subversion/trunk/subversion/libsvn_wc/entries.c Fri Dec 31 16:16:08 2010
@@ -1992,7 +1992,14 @@ write_entry(struct write_baton **entry_n
 
       /* The revert_base checksum isn't available in the entry structure,
          so the caller provides it. */
-      below_working_node->checksum = text_base_info->revert_base.sha1_checksum;
+
+      /* text_base_info is NULL for files scheduled to be added. */
+      below_working_node->checksum = NULL;
+      if (text_base_info)
+        {
+          below_working_node->checksum =
+             text_base_info->revert_base.sha1_checksum;
+        }
       below_working_node->translated_size = 0;
       below_working_node->changed_rev = SVN_INVALID_REVNUM;
       below_working_node->changed_date = 0;
@@ -2025,12 +2032,16 @@ write_entry(struct write_baton **entry_n
         working_node->checksum = NULL;
       else
         {
-          working_node->checksum = text_base_info->normal_base.sha1_checksum;
+          working_node->checksum = NULL;
+          /* text_base_info is NULL for files scheduled to be added. */
+          if (text_base_info)
+            working_node->checksum = text_base_info->normal_base.sha1_checksum;
+         
 
           /* If an MD5 checksum is present in the entry, we can verify that
            * it matches the MD5 of the base file we found earlier. */
 #ifdef SVN_DEBUG
-          if (entry->checksum)
+          if (entry->checksum && text_base_info)
           {
             svn_checksum_t *md5_checksum;
             SVN_ERR(svn_checksum_parse_hex(&md5_checksum, svn_checksum_md5,

Modified: subversion/trunk/subversion/tests/cmdline/upgrade_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/upgrade_tests.py?rev=1054133&r1=1054132&r2=1054133&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/upgrade_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/upgrade_tests.py Fri Dec 31 16:16:08 2010
@@ -865,7 +865,7 @@ test_list = [ None,
               upgrade_tree_conflict_data,
               delete_in_copy_upgrade,
               replaced_files,
-              XFail(upgrade_with_scheduled_change),
+              upgrade_with_scheduled_change,
              ]