unix: don't explicitly instantiate v8::Persistent<x> templates
authorBert Belder <info@2bs.nl>
Mon, 20 Aug 2012 16:13:05 +0000 (19:13 +0300)
committerBert Belder <bertbelder@gmail.com>
Mon, 20 Aug 2012 16:42:05 +0000 (18:42 +0200)
These explicit instantiations were added to make MSVC happy. It turns
out that some older versions of gcc and llvm now complain about duplicate
symbols, so we instantiate these templates only when MSVC is used.

src/node_object_wrap.h

index 62ea244..32d584c 100644 (file)
 // Explicitly instantiate some template classes, so we're sure they will be
 // present in the binary / shared object. There isn't much doubt that they will
 // be, but MSVC tends to complain about these things.
-template class NODE_EXTERN v8::Persistent<v8::Object>;
-template class NODE_EXTERN v8::Persistent<v8::FunctionTemplate>;
+#ifdef _MSC_VER
+  template class NODE_EXTERN v8::Persistent<v8::Object>;
+  template class NODE_EXTERN v8::Persistent<v8::FunctionTemplate>;
+#endif
+
 
 namespace node {