Author: troycurtisjr
Date: Mon Nov 20 02:30:00 2017
New Revision: 1815768
URL: http://svn.apache.org/viewvc?rev=1815768&view=rev
Log:
On branch swig-py3: Fix raw file read handling in python swig bindings to work
the same in Python 2 and 3.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(read_handler_pyio): Replace PyStr_AsUTF8AndSize() with
PyBytes_AsStringAndSize() so that raw file I/O in Python 2 and 3 are handled
the same way.
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=1815768&r1=1815767&r2=1815768&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 Nov 20 02:30:00 2017
@@ -2533,12 +2533,13 @@ read_handler_pyio(void *baton, char *buf
{
err = callback_exception_error();
}
- else if (PyStr_Check(result))
+ else if (PyBytes_Check(result))
{
Py_ssize_t bytes;
- const char *result_str = PyStr_AsUTF8AndSize(result, &bytes);
+ char *result_str;
- if (result_str == NULL)
+ if ( -1 == PyBytes_AsStringAndSize(result, &result_str, &bytes)
+ || result_str == NULL)
{
err = callback_exception_error();
}
@@ -2555,7 +2556,11 @@ read_handler_pyio(void *baton, char *buf
}
else
{
+ #if IS_PY3
+ err = callback_bad_return_error("Not a bytes object");
+ #else
err = callback_bad_return_error("Not a string");
+ #endif
}
Py_XDECREF(result);
svn_swig_py_release_py_lock();