Author: futatuki Revision: 1912500 Modified property: svn:log Modified: svn:log at Mon Sep 25 10:45:18 2023 ------------------------------------------------------------------------------ --- svn:log (original) +++ svn:log Mon Sep 25 10:45:18 2023 @@ -5,18 +5,18 @@ svn_repos_parse_fns3_t C APIs had some l (1) An edit baton made by delta.make_editor / a parse_fns3 baton made by repos.make_parse_fns3 hold a reference of editor object / parse_fns3 - object and they never release it. (SVN-4916) + object and they never release it. (SVN-4916) (2) Wrapper functions of C APIs which drive *svn_delta_editor_t() and svn_repos_parse_fns3_t does not release reference of intermediate baton - which are created during processing call back of the API when an error - is occured during proccessing call back of the API. (SVN-4917) -(3) parse_fns3 driver object and parse_baton can make a circular references + which are created during processing callback of the API when an error + is occured during proccessing callback of the API. (SVN-4917) +(3) parse_fns3 driver object and parse_baton can make a circular reference through the pool cleanup callback registration which is not visible by Python interpreter. If parse_fn3 driver and parse_baton object are allocated from same pool, the python wrapper object of the pool and its entity pool can't clean up. (SVN-4918) -To void those problems, we use pure Python object as batons and hold +To avoid those problems, we use pure Python object as batons and hold references in an ancestor baton object, which is visible from Python interpreter. During the API processing, C callback functions borrow the references from them.