Author: rdonch
Date: Mon Aug  2 23:00:48 2010
New Revision: 981701

URL: http://svn.apache.org/viewvc?rev=981701&view=rev
Log:
Move the descriptor query for "svn_txdelta_op_t *" into the module code;
when it's in libsvn_swig_py, SWIG crashes.

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c,
  subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h:
  (svn_swig_py_txdelta_window_t_ops_get): Add the op_type_info parameter,
    and get the descriptor from it, instead of querying directly.

* subversion/bindings/swig/svn_delta.i:
  (svn_txdelta_window_t_ops_get): Do the query here, and pass the result
    to svn_swig_py_txdelta_window_t_ops_get.


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/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=981701&r1=981700&r2=981701&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 
Mon Aug  2 23:00:48 2010
@@ -4072,15 +4072,15 @@ svn_swig_py_setup_wc_diff_callbacks2(voi
 }
 
 PyObject *
-svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window)
+svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window,
+                                     swig_type_info * op_type_info)
 {
   PyObject *result = PyList_New(window->num_ops);
-  swig_type_info *op_type_info = SWIG_TypeQuery("svn_txdelta_op_t *");
   int i;
-
+  
   for (i = 0; i < window->num_ops; ++i)
       PyList_SET_ITEM(result, i,
-                         SWIG_NewPointerObj(window->ops + i, op_type_info, 0));
+                      SWIG_NewPointerObj(window->ops + i, op_type_info, 0));
 
   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=981701&r1=981700&r2=981701&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 
Mon Aug  2 23:00:48 2010
@@ -509,10 +509,12 @@ SVN_SWIG_SWIGUTIL_EXPORT
 extern const svn_ra_reporter2_t swig_py_ra_reporter2;
 
 /* Get a list of ops from a window. Used to replace the naive
-   svn_txdelta_window_t.ops accessor. */
+   svn_txdelta_window_t.ops accessor. op_type_info is supposed to be
+   the SWIG descriptor of "svn_txdelta_op_t *". */
 SVN_SWIG_SWIGUTIL_EXPORT
 PyObject *
-svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window);
+svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window,
+                                     swig_type_info * op_type_info);
 
 #ifdef __cplusplus
 }

Modified: subversion/trunk/subversion/bindings/swig/svn_delta.i
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/svn_delta.i?rev=981701&r1=981700&r2=981701&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/svn_delta.i (original)
+++ subversion/trunk/subversion/bindings/swig/svn_delta.i Mon Aug  2 23:00:48 
2010
@@ -178,7 +178,8 @@ svn_txdelta_window_t_ops_get(svn_txdelta
 static PyObject *
 svn_txdelta_window_t_ops_get(svn_txdelta_window_t *window)
 {
-  return svn_swig_py_txdelta_window_t_ops_get(window);
+  return svn_swig_py_txdelta_window_t_ops_get(window,
+    SWIG_TypeQuery("svn_txdelta_op_t *"));
 }
 %}
 #endif


Reply via email to