Workaround Win32 compiler bugs following change 26395
Steve Hay [Wed, 4 Jan 2006 10:39:13 +0000 (10:39 +0000)]
Can't understand what VC++ 6 and Borland don't like about it.  There
is similar code for SvMAGIC and SvSTASH already in sv.h.  Must be
compiler bugs since VC++ 7 and MinGW (and compilers on other platforms)
are all happy.

p4raw-id: //depot/perl@26634

gv.h

diff --git a/gv.h b/gv.h
index a97d4ba..97d3cd0 100644 (file)
--- a/gv.h
+++ b/gv.h
@@ -24,7 +24,11 @@ struct gp {
 
 #define GvXPVGV(gv)    ((XPVGV*)SvANY(gv))
 
-#ifdef DEBUGGING
+/* MSVC++ 6.0 (_MSC_VER == 1200) can't compile pp_hot.c with DEBUGGING enabled
+ * if we include the following assert(). Must be a compiler bug because it
+ * works fine with MSVC++ 7.0.  Borland (5.5.1) has the same problem. */
+#if defined(DEBUGGING) && \
+    ((!defined(_MSC_VER) || _MSC_VER > 1200) && !defined(__BORLANDC__))
 #  define GvGP(gv)     (*(assert(SvTYPE(gv) == SVt_PVGV || \
                                  SvTYPE(gv) == SVt_PVLV), \
                           &(GvXPVGV(gv)->xgv_gp)))