[prev in list] [next in list] [prev in thread] [next in thread] 

List:       subversion-cvs
Subject:    svn commit: r15511 - branches/python-bindings-improvements/subversion/bindings/swig/python/libsvn_sw
From:       djames () tigris ! org
Date:       2005-07-30 22:43:06
Message-ID: 200507302243.j6UMh6b12077 () morbius ! ch ! collab ! net
[Download RAW message or body]

Author: djames
Date: Sat Jul 30 17:43:02 2005
New Revision: 15511

Modified:
   branches/python-bindings-improvements/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c


Log:
Fix memory leaks in swigutil_py.c.

* swig/python/libsvn_swig_py/swigutil_py.c:
  (svn_swig_MustGetPtr): Turn *py_pool into a borrowed reference by
  running Py_DECREF on it right away. This solves a potential memory
  leak.
  (make_ob_pool): Solve memory leak when proxy_set_pool fails 
  unexpectedly by moving Py_INCREF and cleanup registration 
  below the proxy_set_pool call.



Modified: branches/python-bindings-improvements/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
                
Url: http://svn.collab.net/viewcvs/svn/branches/python-bindings-improvements/subversio \
n/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=15511&p1=branches/python-bindi \
ngs-improvements/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c&p2=branc \
hes/python-bindings-improvements/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c&r1=15510&r2=15511
 ==============================================================================
--- branches/python-bindings-improvements/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c	(original)
                
+++ branches/python-bindings-improvements/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c	Sat \
Jul 30 17:43:02 2005 @@ -279,6 +279,7 @@
   if (py_pool != NULL) {
     if (PyObject_HasAttrString(input, parentPool)) {
       *py_pool = PyObject_GetAttrString(input, parentPool);
+      Py_DECREF(*py_pool);
     } else {
       *py_pool = _global_svn_swig_py_pool;
     }
@@ -365,14 +366,14 @@
     return NULL;
   }
 
-  Py_INCREF(py_pool);
-  apr_pool_cleanup_register((apr_pool_t *)pool, py_pool, 
-    svn_swig_py_pool_decref, apr_pool_cleanup_null);
-  
   if (proxy_set_pool(py_pool, NULL)) {
     Py_DECREF(py_pool);
     return NULL;
   }
+  
+  Py_INCREF(py_pool);
+  apr_pool_cleanup_register((apr_pool_t *)pool, py_pool, 
+    svn_swig_py_pool_decref, apr_pool_cleanup_null); 
 
   return py_pool;
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: svn-unsubscribe@subversion.tigris.org
For additional commands, e-mail: svn-help@subversion.tigris.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic