Rev 1005: Fix more crash bugs. in file:///data/jelmer/bzr-svn/pyrex/

Jelmer Vernooij jelmer at samba.org
Tue Mar 18 02:07:17 GMT 2008


At file:///data/jelmer/bzr-svn/pyrex/

------------------------------------------------------------
revno: 1005
revision-id:jelmer at samba.org-20080318020716-zaxpm72bkxamv93x
parent: jelmer at samba.org-20080318020709-ew5omyhg0l0dec3h
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: pyrex
timestamp: Tue 2008-03-18 03:07:16 +0100
message:
  Fix more crash bugs.
modified:
  client.pyx                     client.pyx-20080313235339-wbyjbw2namuiql8f-1
  transport.py                   transport.py-20060406231150-b3472d06b3a0818d
  tree.py                        tree.py-20060624222557-dudlwqcmkf22lt2s-1
  workingtree.py                 workingtree.py-20060306120941-b083cb0fdd4a69de
=== modified file 'client.pyx'
--- a/client.pyx	2008-03-16 17:57:35 +0000
+++ b/client.pyx	2008-03-18 02:07:16 +0000
@@ -15,7 +15,7 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 from apr cimport apr_initialize, apr_hash_t, apr_time_t
-from apr cimport apr_array_header_t, apr_array_make, apr_array_push
+from apr cimport apr_array_header_t, apr_array_make, apr_array_push, apr_array_pop
 from apr cimport apr_pool_t, apr_pool_destroy
 from types cimport svn_error_t, svn_cancel_func_t, svn_auth_baton_t, svn_revnum_t, svn_boolean_t, svn_commit_info_t, svn_string_t, svn_log_message_receiver_t
 from core cimport Pool, check_error, string_list_to_apr_array, py_svn_log_wrapper, prop_hash_to_dict
@@ -298,11 +298,17 @@
     def update(self, paths, rev=None, recurse=True, ignore_externals=False):
         cdef apr_array_header_t *result_revs
         cdef svn_opt_revision_t c_rev
+        cdef svn_revnum_t *ret_rev
         to_opt_revision(rev, &c_rev)
         check_error(svn_client_update2(&result_revs, 
                 string_list_to_apr_array(self.pool, paths), &c_rev, 
                 recurse, ignore_externals, self.client, self.pool))
-        # FIXME: Convert and return result_revs
+        ret = []
+        ret_rev = <svn_revnum_t *>apr_array_pop(result_revs)
+        while ret_rev != NULL:
+            ret.append(ret_rev[0])
+            ret_rev = <svn_revnum_t *>apr_array_pop(result_revs)
+        return ret
 
     def revprop_get(self,propname, propval, url, rev=None):
         cdef svn_revnum_t set_rev

=== modified file 'transport.py'
--- a/transport.py	2008-03-16 12:26:31 +0000
+++ b/transport.py	2008-03-18 02:07:16 +0000
@@ -276,10 +276,10 @@
             raise
 
     @convert_svn_error
-    def replay(self, revision, low_water_mark, send_deltas, editor):
+    def replay(self, revision, low_water_mark, editor, send_deltas=True):
         self._open_real_transport()
         self.mutter('svn replay -r%r:%r' % (low_water_mark, revision))
-        self._ra.replay(revision, low_water_mark, send_deltas, editor)
+        self._ra.replay(revision, low_water_mark, editor, send_deltas)
 
     @convert_svn_error
     def do_update(self, revnum, recurse, editor):

=== modified file 'tree.py'
--- a/tree.py	2008-03-16 17:57:35 +0000
+++ b/tree.py	2008-03-18 02:07:16 +0000
@@ -58,8 +58,6 @@
         self.tree = tree
         self.repository = tree._repository
         self.last_revnum = {}
-        self.dir_revnum = {}
-        self.dir_ignores = {}
 
     def set_target_revision(self, revnum):
         self.revnum = revnum
@@ -81,7 +79,6 @@
     def __init__(self, tree, file_id):
         self.tree = tree
         self.file_id = file_id
-        self.dir_ignores = None
 
     def add_directory(self, path, copyfrom_path=None, copyfrom_revnum=-1):
         path = path.decode("utf-8")
@@ -96,11 +93,7 @@
                         SVN_PROP_BZR_FILEIDS, SVN_PROP_BZR_REVISION_ID,
                         SVN_PROP_BZR_BRANCHING_SCHEME, SVN_PROP_BZR_MERGE)
 
-        if name == constants.PROP_ENTRY_COMMITTED_REV:
-            self.dir_revnum = int(value)
-        elif name == constants.PROP_IGNORE:
-            self.dir_ignores = value
-        elif name.startswith(SVN_PROP_BZR_ANCESTRY):
+        if name.startswith(SVN_PROP_BZR_ANCESTRY):
             if self.file_id != self.tree._inventory.root.file_id:
                 mutter('%r set on non-root dir!' % name)
                 return
@@ -109,10 +102,12 @@
                 mutter('%r set on non-root dir!' % name)
                 return
         elif name in (constants.PROP_ENTRY_COMMITTED_DATE,
+                      constants.PROP_ENTRY_COMMITTED_REV,
                       constants.PROP_ENTRY_LAST_AUTHOR,
                       constants.PROP_ENTRY_LOCK_TOKEN,
                       constants.PROP_ENTRY_UUID,
-                      constants.PROP_EXECUTABLE):
+                      constants.PROP_EXECUTABLE,
+                      constants.PROP_IGNORE):
             pass
         elif name.startswith(constants.PROP_WC_PREFIX):
             pass
@@ -130,9 +125,7 @@
         return FileTreeEditor(self.tree, path)
 
     def close(self):
-        if (self.dir_ignores is not None and 
-            self.file_id in self.tree._inventory):
-            self.tree._inventory[self.file_id].ignores = self.dir_ignores
+        pass
 
 
 class FileTreeEditor:

=== modified file 'workingtree.py'
--- a/workingtree.py	2008-03-17 20:59:03 +0000
+++ b/workingtree.py	2008-03-18 02:07:16 +0000
@@ -79,8 +79,8 @@
                 wc.revision_status(self.basedir, None, True)
         if min_rev != max_rev:
             #raise WorkingTreeInconsistent(status.min_rev, status.max_rev)
-            assert status.max_rev == self.client_ctx.update(self.basedir, 
-                                     max_rev, True)
+            assert max_rev == self.client_ctx.update(self.basedir, 
+                                     max_rev, True)[0]
 
         self.base_revnum = max_rev
         self.base_tree = SvnBasisTree(self)
@@ -104,7 +104,7 @@
         ignores.update(wc.get_default_ignores(svn_config))
 
         def dir_add(adm, prefix, patprefix):
-            ignorestr = adm.prop_get(core.SVN_PROP_IGNORE, 
+            ignorestr = adm.prop_get(constants.PROP_IGNORE, 
                                     self.abspath(prefix).rstrip("/"))
             if ignorestr is not None:
                 for pat in ignorestr.splitlines():




More information about the bazaar-commits mailing list