summaryrefslogtreecommitdiff
path: root/sv.h
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2020-06-29 09:00:59 -0600
committerKarl Williamson <khw@cpan.org>2022-06-13 06:05:09 -0600
commitfa50d782e52f23c55bcc3888e30de3b7cc01e3b4 (patch)
tree151d1ae71a092ce0228e15e02d88496823336bb3 /sv.h
parent75111994648b802c88381a3cd338185fd1bbb6fa (diff)
downloadperl-fa50d782e52f23c55bcc3888e30de3b7cc01e3b4.tar.gz
Evaluate SvREFCNT_inc_simple_void() param just once
Diffstat (limited to 'sv.h')
-rw-r--r--sv.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/sv.h b/sv.h
index 4a7dbea1d5..0d940a80c8 100644
--- a/sv.h
+++ b/sv.h
@@ -349,7 +349,13 @@ perform the upgrade if necessary. See C<L</svtype>>.
#define SvREFCNT_inc_void(sv) Perl_SvREFCNT_inc_void(MUTABLE_SV(sv))
/* These guys don't need the curly blocks */
-#define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END
+#define SvREFCNT_inc_simple_void(sv) \
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ if (sv_) \
+ SvREFCNT(sv_)++; \
+ } STMT_END
+
#define SvREFCNT_inc_simple_NN(sv) (++(SvREFCNT(sv)),MUTABLE_SV(sv))
#define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT(MUTABLE_SV(sv)))
#define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT(MUTABLE_SV(sv)))