Fix PerlIO vtables on VMS.
authorCraig A. Berry <craigberry@mac.com>
Thu, 1 Jan 2015 15:02:37 +0000 (09:02 -0600)
committerCraig A. Berry <craigberry@mac.com>
Thu, 1 Jan 2015 15:02:37 +0000 (09:02 -0600)
f0e5c859d36afe5 broke the build because it caused the PerlIO_funcs
declarations to be const in perlio.h and EXTPERLIO in perliol.h
and on VMS, EXTPERLIO was EXTCONST which is globalref.  The compiler
considers globalref and const to be incompatible.

As a workaround, make EXTPERLIO "extern const" on VMS only.  The
whole custom global data model on VMS probably needs a rethink,
but this gets the build working again.

perliol.h

index 87b1fc7..9852026 100644 (file)
--- a/perliol.h
+++ b/perliol.h
@@ -109,7 +109,11 @@ struct _PerlIO {
 /* Data exports - EXTCONST rather than extern is needed for Cygwin */
 #undef EXTPERLIO 
 #ifdef PERLIO_FUNCS_CONST
-#define EXTPERLIO EXTCONST
+#ifdef __VMS
+#  define EXTPERLIO extern const
+#else
+#  define EXTPERLIO EXTCONST
+#endif
 #else
 #define EXTPERLIO EXT
 #endif