diff -r -u --new-file -x*.so -x*.orig -x*~ -x*.o -x.jamdeps boost-rc-1.30.new-orig/boost/python/opaque_pointer_converter.hpp boost-rc-1.30.then/boost/python/opaque_pointer_converter.hpp
--- boost-rc-1.30.new-orig/boost/python/opaque_pointer_converter.hpp	Tue Mar 18 15:02:33 2003
+++ boost-rc-1.30.then/boost/python/opaque_pointer_converter.hpp	Tue Mar 18 14:42:34 2003
@@ -66,8 +66,10 @@
         if (x != 0) {
             instance *o = PyObject_New (instance, &type_object);
 
-            o->x   = x;
-            result = &o->base_;
+            if (o != 0) {
+                o->x   = x;
+                result = &o->base_;
+            }
         } else {
             result = detail::none();
         }
@@ -105,20 +107,19 @@
 }} // namespace boost::python
 # ifdef BOOST_MSVC
 // MSC works without this workaround, but needs another one ...
-# define BOOST_PYTHON_OPAQUE_SPECIALIZED_TYPE_ID(Pointee) \
+# define BOOST_PYTHON_OPAQUE_SPECIALIZED_TYPE_ID(Pointee)  \
 BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(Pointee)
 # else
-# define BOOST_PYTHON_OPAQUE_SPECIALIZED_TYPE_ID(Pointee) \
-namespace boost { namespace python {                      \
-    template<>                                            \
-    inline type_info type_id(boost::type<Pointee>*) {     \
-        return type_info (typeid (Pointee *));            \
-    }                                                     \
-    template<>                                            \
-    inline type_info type_id(                             \
-        boost::type<const volatile Pointee &>*) {         \
-        return type_info (typeid (Pointee *));            \
-    }                                                     \
+# define BOOST_PYTHON_OPAQUE_SPECIALIZED_TYPE_ID(Pointee)  \
+namespace boost { namespace python {                       \
+    template<>                                             \
+    inline type_info type_id<Pointee>() {                  \
+        return type_info (typeid (Pointee *));             \
+    }                                                      \
+    template<>                                             \
+    inline type_info type_id<const volatile Pointee &>() { \
+        return type_info (typeid (Pointee *));             \
+    }                                                      \
 }}
 # endif
 # endif	// OPAQUE_POINTER_CONVERTER_HPP_

