lt sync 2996
This commit is contained in:
parent
ba148a30b1
commit
4d65f237b1
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include <boost/python.hpp>
|
||||
#include <boost/filesystem/path.hpp>
|
||||
#include "libtorrent/utf8.hpp"
|
||||
|
||||
using namespace boost::python;
|
||||
|
||||
|
@ -26,15 +27,33 @@ struct path_from_python
|
|||
|
||||
static void* convertible(PyObject* x)
|
||||
{
|
||||
return PyString_Check(x) ? x : 0;
|
||||
return PyString_Check(x) ? x : PyUnicode_Check(x) ? x : 0;
|
||||
}
|
||||
|
||||
static void construct(PyObject* x, converter::rvalue_from_python_stage1_data* data)
|
||||
{
|
||||
using libtorrent::wchar_utf8;
|
||||
void* storage = ((converter::rvalue_from_python_storage<
|
||||
boost::filesystem::path
|
||||
>*)data)->storage.bytes;
|
||||
if (PyUnicode_Check(x))
|
||||
{
|
||||
std::wstring str;
|
||||
str.resize(PyUnicode_GetSize(x) + 1, 0);
|
||||
int len = PyUnicode_AsWideChar((PyUnicodeObject*)x, &str[0], str.size());
|
||||
if (len > -1)
|
||||
{
|
||||
assert(len < str.size());
|
||||
str[len] = 0;
|
||||
}
|
||||
else str[str.size()-1] = 0;
|
||||
std::string utf8 = wchar_utf8(str);
|
||||
new (storage) boost::filesystem::path(utf8);
|
||||
}
|
||||
else
|
||||
{
|
||||
new (storage) boost::filesystem::path(PyString_AsString(x));
|
||||
}
|
||||
data->convertible = storage;
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue