You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rd...@apache.org on 2010/08/07 01:37:43 UTC
svn commit: r983144 - in /subversion/trunk/subversion/bindings/swig:
python/libsvn_swig_py/swigutil_py.c python/libsvn_swig_py/swigutil_py.h
python/tests/delta.py svn_delta.i
Author: rdonch
Date: Fri Aug 6 23:37:43 2010
New Revision: 983144
URL: http://svn.apache.org/viewvc?rev=983144&view=rev
Log:
As a (hopefully) final follow-up to r981683, set the parent pool correctly
on the returned op object proxies.
[in subversion/bindings/swig]
* python/libsvn_swig_py/swigutil_py.c,
python/libsvn_swig_py/swigutil_py.h:
(svn_swig_py_txdelta_window_t_ops_get): Add a new parameter for the pool to
use when wrapping the op objects.
* svn_delta.i:
(svn_txdelta_window_t_ops_get): Retrieve the parent pool for the window
object and pass it to svn_swig_py_txdelta_window_t_ops_get.
* python/tests/delta.py:
(DeltaTestCase.testTxdeltaWindowT): Add a new assertion to ensure the above
works.
Modified:
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
subversion/trunk/subversion/bindings/swig/python/tests/delta.py
subversion/trunk/subversion/bindings/swig/svn_delta.i
Modified: subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=983144&r1=983143&r2=983144&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Fri Aug 6 23:37:43 2010
@@ -4073,14 +4073,16 @@ svn_swig_py_setup_wc_diff_callbacks2(voi
PyObject *
svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window,
- swig_type_info * op_type_info)
+ swig_type_info * op_type_info,
+ PyObject *window_pool)
{
PyObject *result = PyList_New(window->num_ops);
int i;
for (i = 0; i < window->num_ops; ++i)
PyList_SET_ITEM(result, i,
- SWIG_NewPointerObj(window->ops + i, op_type_info, 0));
+ svn_swig_NewPointerObj(window->ops + i, op_type_info,
+ window_pool, NULL));
return result;
}
Modified: subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h?rev=983144&r1=983143&r2=983144&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (original)
+++ subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h Fri Aug 6 23:37:43 2010
@@ -510,11 +510,14 @@ extern const svn_ra_reporter2_t swig_py_
/* Get a list of ops from a window. Used to replace the naive
svn_txdelta_window_t.ops accessor. op_type_info is supposed to be
- the SWIG descriptor of "svn_txdelta_op_t *". */
+ the SWIG descriptor of "svn_txdelta_op_t *". window_pool is supposed
+ to be the pool associated with the window proxy and used for wrapping
+ the op objects. */
SVN_SWIG_SWIGUTIL_EXPORT
PyObject *
svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window,
- swig_type_info * op_type_info);
+ swig_type_info * op_type_info,
+ PyObject *window_pool);
#ifdef __cplusplus
}
Modified: subversion/trunk/subversion/bindings/swig/python/tests/delta.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/tests/delta.py?rev=983144&r1=983143&r2=983144&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/python/tests/delta.py (original)
+++ subversion/trunk/subversion/bindings/swig/python/tests/delta.py Fri Aug 6 23:37:43 2010
@@ -62,6 +62,9 @@ class DeltaTestCase(unittest.TestCase):
self.assertEqual(window.src_ops, len([op for op in window.ops
if op.action_code == svn.delta.svn_txdelta_source]))
+ # Check that the ops inherit the window's pool
+ self.assertEqual(window.ops[0]._parent_pool, window._parent_pool)
+
def suite():
return unittest.defaultTestLoader.loadTestsFromTestCase(DeltaTestCase)
Modified: subversion/trunk/subversion/bindings/swig/svn_delta.i
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/svn_delta.i?rev=983144&r1=983143&r2=983144&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/svn_delta.i (original)
+++ subversion/trunk/subversion/bindings/swig/svn_delta.i Fri Aug 6 23:37:43 2010
@@ -179,7 +179,7 @@ static PyObject *
svn_txdelta_window_t_ops_get(PyObject *window_ob)
{
void *window;
- PyObject * ops_list;
+ PyObject *ops_list, *window_pool;
int status;
/* Kludge alert!
@@ -209,8 +209,16 @@ svn_txdelta_window_t_ops_get(PyObject *w
return NULL;
}
+ window_pool = PyObject_GetAttrString(window_ob, "_parent_pool");
+
+ if (window_pool == NULL)
+ {
+ svn_swig_py_release_py_lock();
+ return NULL;
+ }
+
ops_list = svn_swig_py_txdelta_window_t_ops_get(window,
- SWIG_TypeQuery("svn_txdelta_op_t *"));
+ SWIG_TypeQuery("svn_txdelta_op_t *"), window_pool);
svn_swig_py_release_py_lock();