1bc623a
--- lib/core/src/perl/CPlusPlus.xxs.orig	2017-01-10 20:35:05.445876614 -0700
1bc623a
+++ lib/core/src/perl/CPlusPlus.xxs	2017-01-10 20:39:15.586274234 -0700
1bc623a
@@ -158,8 +158,8 @@ void defuse_lval_magic(pTHX_ SV* sv)
1bc623a
 {
1bc623a
    MGS *mgs;
1bc623a
    I32 mgs_ix;
1bc623a
-   assert(PL_savestack[PL_savestack_ix-1].any_i32==SAVEt_DESTRUCTOR_X);
1bc623a
-   mgs_ix=PL_savestack[PL_savestack_ix-2].any_i32;
1bc623a
+   assert(PL_savestack[PL_savestack_ix-1].any_uv==SAVEt_DESTRUCTOR_X);
1bc623a
+   mgs_ix=(I32)PL_savestack[PL_savestack_ix-2].any_uv;
1bc623a
    mgs=SSPTR(mgs_ix, MGS*);
1bc623a
    assert(mgs->mgs_sv==sv);
1bc623a
    mgs->mgs_flags=0;
1bc623a
@@ -417,7 +417,7 @@ SV* new_container_magic_sv(pTHX_ const c
1bc623a
    AV* av=newAV();
1bc623a
    int last_it= t->acc[2].begin ? 2 : 1; // has reverse_iterator?
1bc623a
    av_extend(av, last_it);
1bc623a
-   *(int*)(AvARRAY(av))=-1;              // loop context index
1bc623a
+   AvARRAY(av)[0]=reinterpret_cast<SV *>((IV)-1); // loop context index
1bc623a
    AvFILLp(av)=-1;                       // cached real container size 
1bc623a
    AvREAL_off(av);                       // we'll destroy the iterator SVs manually
1bc623a
 
1bc623a
@@ -521,7 +521,7 @@ int canned_container_access(pTHX_ SV *sv
1bc623a
          } else {
1bc623a
             it_index=1;  it_incr=1;
1bc623a
          }
1bc623a
-         if (*(int*)(AvARRAY(my_av)) != cix) {
1bc623a
+         if (AvARRAY(my_av)[0] != reinterpret_cast<SV *>((IV)cix)) {
1bc623a
             // new loop detected: need a new iterator
1bc623a
 
1bc623a
             if (!acct->begin)
1bc623a
@@ -537,7 +537,7 @@ int canned_container_access(pTHX_ SV *sv
1bc623a
                mg->mg_ptr=(char*)obj;
1bc623a
                ForLoopArray(cx)=my_av;
1bc623a
             }
1bc623a
-            *(int*)(AvARRAY(my_av))=cix;
1bc623a
+            AvARRAY(my_av)[0]=reinterpret_cast<SV *>((IV)cix);
1bc623a
             AvARRAY(my_av)[it_index]=it_sv=newSV(0);
1bc623a
             sv_upgrade(it_sv, SVt_PVIV);
1bc623a
             sv_grow(it_sv, acct->obj_size);
1bc623a
--- lib/core/src/perl/namespaces.xs.orig	2016-07-22 06:23:31.000000000 -0600
1bc623a
+++ lib/core/src/perl/namespaces.xs	2017-01-10 20:36:01.716516149 -0700
1bc623a
@@ -219,7 +219,7 @@ void insert_undo(pTHX_ int skip_frames)
1bc623a
       memcpy(to_restore->saved, saves, 3 * sizeof(to_restore->saved[0]));
1bc623a
       (saves++)->any_dxptr=&reset_ptrs;
1bc623a
       (saves++)->any_ptr=to_restore;
1bc623a
-      (saves++)->any_i32=SAVEt_DESTRUCTOR_X;
1bc623a
+      (saves++)->any_uv=SAVEt_DESTRUCTOR_X;
1bc623a
    } else {
1bc623a
       /* we are in the main script scope, no further enclosing contexts */
1bc623a
       SV* restore_holder=newSV(0);
1bc623a
@@ -229,7 +229,7 @@ void insert_undo(pTHX_ int skip_frames)
1bc623a
       saves=PL_savestack;
1bc623a
       memcpy(to_restore->saved, saves, 2 * sizeof(to_restore->saved[0]));
1bc623a
       saves[0].any_ptr=restore_holder;
1bc623a
-      saves[1].any_i32=SAVEt_FREESV;
1bc623a
+      saves[1].any_uv=SAVEt_FREESV;
1bc623a
    }
1bc623a
 }
1bc623a
 
1bc623a
--- lib/core/src/perl/Scope.xs.orig	2016-07-22 06:23:31.000000000 -0600
1bc623a
+++ lib/core/src/perl/Scope.xs	2017-01-10 20:39:47.610069094 -0700
1bc623a
@@ -420,7 +420,7 @@ LEAVE;
1bc623a
    for (f=frame_top-3; f >= frame_bottom; --f)
1bc623a
       if (mainstack[f].any_ptr == (void*)&localize_marker
1bc623a
           && f+2 < frame_top
1bc623a
-          && mainstack[f+2].any_i32 == SAVEt_DESTRUCTOR_X) {
1bc623a
+          && mainstack[f+2].any_uv == SAVEt_DESTRUCTOR_X) {
1bc623a
 
1bc623a
          if (scope != (AV*)mainstack[f+1].any_ptr) break;
1bc623a