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