From 2e3ae9decb9a8e607756b0afca2f4bf1c620455b Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Tue, 4 Jun 2002 20:26:18 +0000 Subject: [PATCH] fixup for __module__ attribute setting [SVN r14082] --- include/boost/python/detail/module_base.hpp | 2 +- src/module.cpp | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) 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 } };