Upgrade to Encode 2.08.
[p5sagit/p5-mst-13.2.git] / sv.h
diff --git a/sv.h b/sv.h
index c9341e6..e80c755 100644 (file)
--- a/sv.h
+++ b/sv.h
@@ -567,9 +567,9 @@ Set the length of the string which is in the SV.  See C<SvCUR>.
 #define SvIOK_on(sv)           (SvRELEASE_IVX(sv), \
                                    SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
 #define SvIOK_off(sv)          (SvFLAGS(sv) &= ~(SVf_IOK|SVp_IOK|SVf_IVisUV))
-#define SvIOK_only(sv)         ((void)SvOK_off(sv), \
+#define SvIOK_only(sv)         (SvOK_off(sv), \
                                    SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
-#define SvIOK_only_UV(sv)      ((void)SvOK_off_exc_UV(sv), \
+#define SvIOK_only_UV(sv)      (SvOK_off_exc_UV(sv), \
                                    SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
 
 #define SvIOK_UV(sv)           ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV))   \
@@ -585,7 +585,7 @@ Set the length of the string which is in the SV.  See C<SvCUR>.
 #define SvNOK(sv)              (SvFLAGS(sv) & SVf_NOK)
 #define SvNOK_on(sv)           (SvFLAGS(sv) |= (SVf_NOK|SVp_NOK))
 #define SvNOK_off(sv)          (SvFLAGS(sv) &= ~(SVf_NOK|SVp_NOK))
-#define SvNOK_only(sv)         ((void)SvOK_off(sv), \
+#define SvNOK_only(sv)         (SvOK_off(sv), \
                                    SvFLAGS(sv) |= (SVf_NOK|SVp_NOK))
 
 /*
@@ -626,7 +626,7 @@ and leaves the UTF-8 status as it was.
 #define SvVOK(sv)              (SvMAGICAL(sv) && mg_find(sv,'V'))
 #define SvOOK(sv)              (SvFLAGS(sv) & SVf_OOK)
 #define SvOOK_on(sv)           ((void)SvIOK_off(sv), SvFLAGS(sv) |= SVf_OOK)
-#define SvOOK_off(sv)          (SvOOK(sv) && sv_backoff(sv))
+#define SvOOK_off(sv)          ((void)(SvOOK(sv) && sv_backoff(sv)))
 
 #define SvFAKE(sv)             (SvFLAGS(sv) & SVf_FAKE)
 #define SvFAKE_on(sv)          (SvFLAGS(sv) |= SVf_FAKE)
@@ -1103,6 +1103,7 @@ Like C<sv_catsv> but doesn't process magic.
 #define SV_GMAGIC              2
 #define SV_COW_DROP_PV         4
 #define SV_UTF8_NO_ENCODING    8
+#define SV_NOSTEAL             16
 
 /* We are about to replace the SV's current value. So if it's copy on write
    we need to normalise it. Use the SV_COW_DROP_PV flag hint to say that
@@ -1124,7 +1125,7 @@ Like C<sv_catsv> but doesn't process magic.
 #define CAN_COW_FLAGS  (SVp_POK|SVf_POK)
 
 #else
-#  define SvRELEASE_IVX(sv)   ((void)SvOOK_off(sv))
+#  define SvRELEASE_IVX(sv)   SvOOK_off(sv)
 #endif /* PERL_COPY_ON_WRITE */
 
 #define SV_CHECK_THINKFIRST(sv) if (SvTHINKFIRST(sv)) \
@@ -1242,10 +1243,7 @@ Returns a pointer to the character buffer.
 #define SvSetSV_nosteal_and(dst,src,finally) \
        STMT_START {                                    \
            if ((dst) != (src)) {                       \
-               U32 tMpF = SvFLAGS(src) & SVs_TEMP;     \
-               SvTEMP_off(src);                        \
-               sv_setsv(dst, src);                     \
-               SvFLAGS(src) |= tMpF;                   \
+               sv_setsv_flags(dst, src, SV_GMAGIC | SV_NOSTEAL);       \
                finally;                                \
            }                                           \
        } STMT_END