diff options
-rw-r--r-- | Examples/test-suite/li_std_wstring.i | 8 | ||||
-rw-r--r-- | Examples/test-suite/python/li_std_wstring_runme.py | 6 | ||||
-rw-r--r-- | Lib/python/pywstrings.swg | 4 |
3 files changed, 15 insertions, 3 deletions
diff --git a/Examples/test-suite/li_std_wstring.i b/Examples/test-suite/li_std_wstring.i index c809e11ec..e0ecde53b 100644 --- a/Examples/test-suite/li_std_wstring.i +++ b/Examples/test-suite/li_std_wstring.i @@ -38,6 +38,14 @@ wchar_t* test_cvalue(wchar_t* x) { } +wchar_t* test_wchar_overload() { + return 0; +} + +wchar_t* test_wchar_overload(wchar_t *x) { + return x; +} + std::wstring test_value(std::wstring x) { return x; } diff --git a/Examples/test-suite/python/li_std_wstring_runme.py b/Examples/test-suite/python/li_std_wstring_runme.py index a2d419a0a..fecc527e0 100644 --- a/Examples/test-suite/python/li_std_wstring_runme.py +++ b/Examples/test-suite/python/li_std_wstring_runme.py @@ -13,6 +13,12 @@ if li_std_wstring.test_ccvalue(x) != x: if li_std_wstring.test_cvalue(x) != x: raise RuntimeError("bad string mapping") +if li_std_wstring.test_wchar_overload(x) != x: + raise RuntimeError("bad string mapping") + +if li_std_wstring.test_wchar_overload("not unicode") != "not unicode": + raise RuntimeError("bad string mapping") + if li_std_wstring.test_value(x) != x: print x, li_std_wstring.test_value(x) raise RuntimeError("bad string mapping") diff --git a/Lib/python/pywstrings.swg b/Lib/python/pywstrings.swg index 619bdd555..864376b01 100644 --- a/Lib/python/pywstrings.swg +++ b/Lib/python/pywstrings.swg @@ -18,9 +18,7 @@ SWIG_AsWCharPtrAndSize(PyObject *obj, wchar_t **cptr, size_t *psize, int *alloc) int isunicode = PyUnicode_Check(obj); %#if PY_VERSION_HEX < 0x03000000 if (!isunicode && PyString_Check(obj)) { - if (cptr) { - obj = tmp = PyUnicode_FromObject(obj); - } + obj = tmp = PyUnicode_FromObject(obj); isunicode = 1; } %#endif |