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(); }
