Cast markstack values to I32
Jan Dubois [Mon, 9 Apr 2007 18:11:32 +0000 (11:11 -0700)]
Message-ID: <prol131i8b27re246alnhmem4mj13fcl2b@4ax.com>

p4raw-id: //depot/perl@30879

XSUB.h
pp.h

diff --git a/XSUB.h b/XSUB.h
index f7d04a8..bff12e3 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -115,13 +115,13 @@ is a lexical $_ in scope.
 #  endif
 #endif
 
-#define dAX const I32 ax = MARK - PL_stack_base + 1
+#define dAX const I32 ax = (I32)(MARK - PL_stack_base + 1)
 
 #define dAXMARK                                \
        I32 ax = POPMARK;       \
        register SV **mark = PL_stack_base + ax++
 
-#define dITEMS I32 items = SP - MARK
+#define dITEMS I32 items = (I32)(SP - MARK)
 
 #if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
 #  define dXSARGS \
diff --git a/pp.h b/pp.h
index 9c805c6..463eda7 100644 (file)
--- a/pp.h
+++ b/pp.h
@@ -59,7 +59,7 @@ Refetch the stack pointer.  Used after a callback.  See L<perlcall>.
        STMT_START {                                    \
            if (++PL_markstack_ptr == PL_markstack_max) \
            markstack_grow();                           \
-           *PL_markstack_ptr = (p) - PL_stack_base;    \
+           *PL_markstack_ptr = (I32)((p) - PL_stack_base);\
        } STMT_END
 
 #define TOPMARK                (*PL_markstack_ptr)
@@ -68,7 +68,7 @@ Refetch the stack pointer.  Used after a callback.  See L<perlcall>.
 #define dSP            SV **sp = PL_stack_sp
 #define djSP           dSP
 #define dMARK          register SV **mark = PL_stack_base + POPMARK
-#define dORIGMARK      const I32 origmark = mark - PL_stack_base
+#define dORIGMARK      const I32 origmark = (I32)(mark - PL_stack_base)
 #define ORIGMARK       (PL_stack_base + origmark)
 
 #define SPAGAIN                sp = PL_stack_sp