Author: futatuki
Date: Tue Nov  5 14:12:09 2019
New Revision: 1869403

URL: http://svn.apache.org/viewvc?rev=1869403&view=rev
Log:
Avoid deprecation warnings about PY_SSIZE_T_CLEAN since Python 3.8

On Python C API, use of # variants of formats in parsing or building value,
(e.g. PyObject_CallFunction(), etc) without PY_SSIZE_T_CLEAN defined
raises DeprecationWarning since Python 3.8 [1][2]. As PY_SSIZE_T_CLEAN
feature was introduced in Python 2.5 and we only support Python >= 2.7,
there is no compatibility problem to use it.

[1] https://docs.python.org/3/whatsnew/3.8.html#changes-in-the-c-api
[2] https://docs.python.org/3/c-api/arg.html#arg-parsing

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
  (PY_SSIZE_T_CLEAN): New definition
  (change_dir_prop, change_file_prop, parse_fn3_set_revision_property,
   parse_fn3_set_node_property, write_handler_pyio): Cast the length
   argument of '#' variants of formats to build Python argment value,
   to Py_ssize_t. 

Patch by: Jun Omae <jun66j5{_AT_}gmail.com>

Modified:
    
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

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=1869403&r1=1869402&r2=1869403&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 
Tue Nov  5 14:12:09 2019
@@ -23,6 +23,8 @@
 
 /* Tell swigutil_py.h that we're inside the implementation */
 #define SVN_SWIG_SWIGUTIL_PY_C
+/* Avoid deprecation warnings about PY_SSIZE_T_CLEAN since Python 3.8 */
+#define PY_SSIZE_T_CLEAN
 
 #include <Python.h>
 
@@ -1990,7 +1992,7 @@ static svn_error_t *change_dir_prop(void
 #endif
                                     ib->baton, name,
                                     value ? value->data : NULL,
-                                    value ? value->len : 0,
+                                    (Py_ssize_t) (value ? value->len : 0),
                                     make_ob_pool, pool)) == NULL)
     {
       err = callback_exception_error();
@@ -2195,7 +2197,7 @@ static svn_error_t *change_file_prop(voi
 #endif
                                     ib->baton, name,
                                     value ? value->data : NULL,
-                                    value ? value->len : 0,
+                                    (Py_ssize_t) (value ? value->len : 0),
                                     make_ob_pool, pool)) == NULL)
     {
       err = callback_exception_error();
@@ -2432,7 +2434,8 @@ static svn_error_t *parse_fn3_set_revisi
 #endif
                                     ib->baton, name,
                                     value ? value->data : NULL,
-                                    value ? value->len : 0)) == NULL)
+                                    (Py_ssize_t) (value ? value->len : 0)))
+      == NULL)
     {
       err = callback_exception_error();
       goto finished;
@@ -2467,7 +2470,8 @@ static svn_error_t *parse_fn3_set_node_p
 #endif
                                     ib->baton, name,
                                     value ? value->data : NULL,
-                                    value ? value->len : 0)) == NULL)
+                                    (Py_ssize_t) (value ? value->len : 0)))
+      == NULL)
     {
       err = callback_exception_error();
       goto finished;
@@ -2802,7 +2806,7 @@ write_handler_pyio(void *baton, const ch
       svn_swig_py_acquire_py_lock();
       if ((result = PyObject_CallMethod(py_io, (char *)"write",
                                        (char *) SVN_SWIG_BYTES_FMT "#",
-                                       data, *len)) == NULL)
+                                       data, (Py_ssize_t) *len)) == NULL)
         {
           err = callback_exception_error();
         }


Reply via email to