diff --git a/include/boost/python/detail/module_base.hpp b/include/boost/python/detail/module_base.hpp index 043a6f47..ecd13aa4 100644 --- a/include/boost/python/detail/module_base.hpp +++ b/include/boost/python/detail/module_base.hpp @@ -27,7 +27,7 @@ class BOOST_PYTHON_DECL module_base inline ref object() const; protected: - void generic_add_class(ref class_obj); + void add_class(ref const& class_obj); private: ref m_module; diff --git a/src/module.cpp b/src/module.cpp index 5020170c..e958c6d8 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -45,15 +45,20 @@ void module_base::add_type(ref x) add((PyTypeObject*)x.release()); } -void module_base::generic_add_class(ref class_obj) +void module_base::add_class(ref const& class_obj) { - Py_INCREF(class_obj.get()); this->add_type(class_obj); - ref module_name(PyObject_GetAttrString(m_module.get(), - const_cast("__name__"))); - int status = PyObject_SetAttrString(class_obj.get(), - const_cast("__module__"), module_name.get()); - if (status == -1) throw_error_already_set(); + + ref module_name( + PyObject_GetAttrString( + m_module.get(), const_cast("__name__")) + ); + + int status = PyObject_SetAttrString( + class_obj.get(), const_cast("__module__"), module_name.get()); + + if (status == -1) + throw_error_already_set(); } PyMethodDef module_base::initial_methods[] = { { 0, 0, 0, 0 } };