Index: src/object/class.cpp =================================================================== --- src/object/class.cpp (revision 72344) +++ src/object/class.cpp (working copy) @@ -76,11 +76,11 @@ static int property_init(PyObject *self, PyObject *args, PyObject *kwds) { PyObject *get = NULL, *set = NULL, *del = NULL, *doc = NULL; - static char *kwlist[] = {"fget", "fset", "fdel", "doc", 0}; + static const char *kwlist[] = {"fget", "fset", "fdel", "doc", 0}; propertyobject *prop = (propertyobject *)self; if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OOOO:property", - kwlist, &get, &set, &del, &doc)) + const_cast(kwlist), &get, &set, &del, &doc)) return -1; if (get == Py_None) Index: src/converter/builtin_converters.cpp =================================================================== --- src/converter/builtin_converters.cpp (revision 72344) +++ src/converter/builtin_converters.cpp (working copy) @@ -366,7 +366,9 @@ static PyTypeObject const* get_pytype() { return &PyFloat_Type;} }; +#if PY_VERSION_HEX >= 0x03000000 unaryfunc py_unicode_as_string_unaryfunc = PyUnicode_AsUTF8String; +#endif // A SlotPolicy for extracting C++ strings from Python objects. struct string_rvalue_from_python Index: src/converter/from_python.cpp =================================================================== --- src/converter/from_python.cpp (revision 72344) +++ src/converter/from_python.cpp (working copy) @@ -44,11 +44,8 @@ // First check to see if it's embedded in an extension class // instance, as a special case. data.convertible = objects::find_instance_impl(source, converters.target_type, converters.is_shared_ptr); - if (data.convertible) - { data.construct = 0; - } - else + if (!data.convertible) { for (rvalue_from_python_chain const* chain = converters.rvalue_chain; chain != 0;