summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--av.h4
-rw-r--r--handy.h1
-rw-r--r--pad.h6
-rw-r--r--thread.h2
4 files changed, 7 insertions, 6 deletions
diff --git a/av.h b/av.h
index c48df390c7..77df033dc7 100644
--- a/av.h
+++ b/av.h
@@ -75,7 +75,7 @@ Same as C<av_len()>. Deprecated, use C<av_len()> instead.
#define AvALLOC(av) (*((SV***)&((XPVAV*) SvANY(av))->xav_alloc))
#define AvMAX(av) ((XPVAV*) SvANY(av))->xav_max
#define AvFILLp(av) ((XPVAV*) SvANY(av))->xav_fill
-#define AvARYLEN(av) (*Perl_av_arylen_p(aTHX_ (AV*)av))
+#define AvARYLEN(av) (*Perl_av_arylen_p(aTHX_ MUTABLE_AV(av)))
#define AvREAL(av) (SvFLAGS(av) & SVpav_REAL)
#define AvREAL_on(av) (SvFLAGS(av) |= SVpav_REAL)
@@ -101,7 +101,7 @@ Creates a new AV. The reference count is set to 1.
=cut
*/
-#define newAV() ((AV *)newSV_type(SVt_PVAV))
+#define newAV() MUTABLE_AV(newSV_type(SVt_PVAV))
/*
* Local variables:
diff --git a/handy.h b/handy.h
index d6a9026740..cd6e4cb896 100644
--- a/handy.h
+++ b/handy.h
@@ -54,6 +54,7 @@ Null SV pointer. (No longer available when C<PERL_CORE> is defined.)
# define MUTABLE_PTR(p) ((void *) (p))
#endif
+#define MUTABLE_AV(p) ((AV *)MUTABLE_PTR(p))
#define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p))
/* XXX Configure ought to have a test for a boolean type, if I can
diff --git a/pad.h b/pad.h
index 2f0fb7c7d1..10e094eef2 100644
--- a/pad.h
+++ b/pad.h
@@ -210,7 +210,7 @@ Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL()
#define PAD_BASE_SV(padlist, po) \
(AvARRAY(padlist)[1]) \
- ? AvARRAY((AV*)(AvARRAY(padlist)[1]))[po] : NULL;
+ ? AvARRAY(MUTABLE_AV((AvARRAY(padlist)[1])))[po] : NULL;
#define PAD_SET_CUR_NOSAVE(padlist,nth) \
@@ -258,7 +258,7 @@ context block structure (can be used as an lvalue).
*/
#define CX_CURPAD_SAVE(block) (block).oldcomppad = PL_comppad
-#define CX_CURPAD_SV(block,po) (AvARRAY((AV*)((block).oldcomppad))[po])
+#define CX_CURPAD_SV(block,po) (AvARRAY(MUTABLE_AV(((block).oldcomppad)))[po])
/*
@@ -337,7 +337,7 @@ Clone the state variables associated with running and compiling pads.
* sub's CV or padlist. */
#define PAD_CLONE_VARS(proto_perl, param) \
- PL_comppad = (AV *) ptr_table_fetch(PL_ptr_table, proto_perl->Icomppad); \
+ PL_comppad = MUTABLE_AV(ptr_table_fetch(PL_ptr_table, proto_perl->Icomppad)); \
PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \
PL_comppad_name = av_dup(proto_perl->Icomppad_name, param); \
PL_comppad_name_fill = proto_perl->Icomppad_name_fill; \
diff --git a/thread.h b/thread.h
index 655e827fae..7718d4befd 100644
--- a/thread.h
+++ b/thread.h
@@ -156,7 +156,7 @@
#define THREAD_RET_CAST(x) ((any_t) x)
#define DETACH(t) cthread_detach(t->self)
-#define JOIN(t, avp) (*(avp) = (AV *)cthread_join(t->self))
+#define JOIN(t, avp) (*(avp) = MUTABLE_AV(cthread_join(t->self)))
#define PERL_SET_CONTEXT(t) cthread_set_data(cthread_self(), t)
#define PERL_GET_CONTEXT cthread_data(cthread_self())