Author: gstein
Date: Mon Oct 23 03:00:22 2023
New Revision: 1913219

URL: http://svn.apache.org/viewvc?rev=1913219&view=rev
Log:
Revise pool usage for .get_rev_prop() to the standard "scratch_pool"
pattern, rather than using a stored pool.

* tools/hook-scripts/mailer/mailer.py:
  (Commit.__init__): pass POOL for the .get_rev_prop() call
  (PropChange.generate): use self.pool (from OutputBase) as the
    scratch pool for .get_rev_prop()
  (generate_content): pass POOL for the .get_rev_prop() call
  (DiffGenerator.__getitem__): use our stored pool as the scratch pool
    for the .get_rev_prop() call.
  (Repository.__init__): rename instance variable to HOLD_POOL to
    indicate its use for holding values (FS roots). Update call to
    .get_rev_prop()
  (Repository.get_rev_prop): take a SCRATCH_POOL argument, and use
    that pool rather than the pool stored in the instance.
  (Repository.get_root): track change to self.HOLD_POOL

Modified:
    subversion/trunk/tools/hook-scripts/mailer/mailer.py

Modified: subversion/trunk/tools/hook-scripts/mailer/mailer.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/tools/hook-scripts/mailer/mailer.py?rev=1913219&r1=1913218&r2=1913219&view=diff
==============================================================================
--- subversion/trunk/tools/hook-scripts/mailer/mailer.py (original)
+++ subversion/trunk/tools/hook-scripts/mailer/mailer.py Mon Oct 23 03:00:22 
2023
@@ -478,7 +478,7 @@ class Commit(Messenger):
 
     self.changelist = sorted(editor.get_changes().items())
 
-    log = to_str(repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG) or b'')
+    log = to_str(repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG, pool) or 
b'')
 
     # collect the set of groups and the unique sets of params for the options
     self.groups = { }
@@ -580,7 +580,7 @@ class PropChange(Messenger):
                                          % self.action)))
         if self.action == 'A' or self.action not in actions:
           writer.write('Property value:\n')
-          propvalue = self.repos.get_rev_prop(self.propname)
+          propvalue = self.repos.get_rev_prop(self.propname, self.pool)
           writer.write(propvalue)
         elif self.action == 'M':
           writer.write('Property diff:\n')
@@ -588,7 +588,7 @@ class PropChange(Messenger):
           tempfile1.write(_stdin.read())
           tempfile1.flush()
           tempfile2 = tempfile.NamedTemporaryFile()
-          tempfile2.write(self.repos.get_rev_prop(self.propname))
+          tempfile2.write(self.repos.get_rev_prop(self.propname, self.pool))
           tempfile2.flush()
           self.output.run(self.cfg.get_diff_cmd(group, {
             'label_from' : 'old property value',
@@ -774,7 +774,7 @@ class DiffURLSelections:
 def generate_content(writer, cfg, repos, changelist, group, params, paths,
                      pool):
 
-  svndate = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE)
+  svndate = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE, pool)
   ### pick a different date format?
   date = time.ctime(svn.core.secs_from_timestr(svndate, pool))
 
@@ -806,7 +806,7 @@ def generate_content(writer, cfg, repos,
     author=repos.author,
     date=date,
     rev=repos.rev,
-    log=to_str(repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG) or b''),
+    log=to_str(repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG, pool) or 
b''),
     commit_url=commit_url,
     summary=summary,
     show_nonmatching_paths=show_nonmatching_paths,
@@ -905,7 +905,7 @@ class DiffGenerator:
 
       if change.base_rev != -1:
         svndate = self.repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE,
-                                          change.base_rev)
+                                          self.pool, change.base_rev)
         ### pick a different date format?
         base_date = time.ctime(svn.core.secs_from_timestr(svndate, self.pool))
       else:
@@ -1256,7 +1256,9 @@ class Repository:
   def __init__(self, repos_dir, rev, pool):
     self.repos_dir = repos_dir
     self.rev = rev
-    self.pool = pool
+
+    # Any data that we HOLD will be allocated in this pool.
+    self.hold_pool = pool
 
     self.repos_ptr = svn.repos.open(repos_dir, pool)
     self.fs_ptr = svn.repos.fs(self.repos_ptr)
@@ -1265,21 +1267,21 @@ class Repository:
 
     self.root_this = self.get_root(rev)
 
-    self.author = self.get_rev_prop(svn.core.SVN_PROP_REVISION_AUTHOR)
+    self.author = self.get_rev_prop(svn.core.SVN_PROP_REVISION_AUTHOR, pool)
     if self.author is not None:
       self.author = to_str(self.author)
 
-  def get_rev_prop(self, propname, rev = None):
+  def get_rev_prop(self, propname, scratch_pool, rev=None):
     if not rev:
       rev = self.rev
-    return svn.fs.revision_prop(self.fs_ptr, rev, propname, self.pool)
+    return svn.fs.revision_prop(self.fs_ptr, rev, propname, scratch_pool)
 
   def get_root(self, rev):
     try:
       return self.roots[rev]
     except KeyError:
       pass
-    root = self.roots[rev] = svn.fs.revision_root(self.fs_ptr, rev, self.pool)
+    root = self.roots[rev] = svn.fs.revision_root(self.fs_ptr, rev, 
self.hold_pool)
     return root
 
 


Reply via email to