Author: futatuki
Date: Mon Jul  8 15:30:35 2019
New Revision: 1862755

URL: http://svn.apache.org/viewvc?rev=1862755&view=rev
Log:
On branch swig-py3: avoid crash when status is NULL

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
 (svn_swig_py_client_status_func) Allow NULL for status.

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

Modified: 
subversion/branches/swig-py3/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1862755&r1=1862754&r2=1862755&view=diff
==============================================================================
--- 
subversion/branches/swig-py3/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
 (original)
+++ 
subversion/branches/swig-py3/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
 Mon Jul  8 15:30:35 2019
@@ -3057,15 +3057,30 @@ void svn_swig_py_client_status_func(void
      if it is occurred, and restore error indicator */
   PyErr_Fetch(&exc_type, &exc, &exc_traceback);
 
-  if ((result = PyObject_CallFunction(function,
+  if (status == NULL)
+    {
+      result = PyObject_CallFunction(function,
 #if IS_PY3
-                                      (char *)"yO&O&",
+                                     (char *)"yOO&",
 #else
-                                      (char *)"sO&O&",
+                                     (char *)"sOO&",
 #endif
-                                      path,
-                                      make_ob_client_status, status,
-                                      make_ob_pool, scratch_pool)) == NULL)
+                                     path, Py_None,
+                                     make_ob_pool, scratch_pool);
+    }
+  else
+    {
+      result = PyObject_CallFunction(function,
+#if IS_PY3
+                                     (char *)"yO&O&",
+#else
+                                     (char *)"sO&O&",
+#endif
+                                     path,
+                                     make_ob_client_status, status,
+                                     make_ob_pool, scratch_pool);
+    }
+  if (result == NULL)
     {
       err = callback_exception_error();
     }


Reply via email to