-  f << tab4 << "if (" << src << ") {\n"
-    << tab8 << "if (" << src << " == Py_None) { " << dest << " = NULL; }\n"
-    << tab8 << "else if (SWIG_GetPtrObj(" << src << ",(void **) &" << dest << ",";
+    if (t->is_reference)
+        f << tab4 << "if (" << src << ") {\n"
+          << tab8 << "if (SWIG_GetPtrObj(" << src << ",(void **) &" << dest << ",";
+    else
+        f << tab4 << "if (" << src << ") {\n"
+          << tab8 << "if (" << src << " == Py_None) { " << dest << " = NULL; }\n"
+          << tab8 << "else if (SWIG_GetPtrObj(" << src << ",(void **) &" << dest << ",";