summaryrefslogtreecommitdiff
path: root/mg.c
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2022-06-20 20:49:47 -0600
committerKarl Williamson <khw@cpan.org>2022-06-20 21:22:19 -0600
commit34e6ab8ffa5a21acdac8ec7371b60f950cfe8ff6 (patch)
tree9762a544c993e82bf871c8711c9e50b14c6b3985 /mg.c
parent5da55c47184ab936397150bf2c6674c7cf4f88d1 (diff)
downloadperl-34e6ab8ffa5a21acdac8ec7371b60f950cfe8ff6.tar.gz
SvRTRIM: Ensure param eval'd exactly once
Diffstat (limited to 'mg.c')
-rw-r--r--mg.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/mg.c b/mg.c
index b3219d7623..55cb5bab72 100644
--- a/mg.c
+++ b/mg.c
@@ -724,15 +724,16 @@ Perl_magic_regdatum_set(pTHX_ SV *sv, MAGIC *mg)
NORETURN_FUNCTION_END;
}
-#define SvRTRIM(sv) STMT_START { \
- if (SvPOK(sv)) { \
- STRLEN len = SvCUR(sv); \
- char * const p = SvPVX(sv); \
- while (len > 0 && isSPACE(p[len-1])) \
- --len; \
- SvCUR_set(sv, len); \
- p[len] = '\0'; \
- } \
+#define SvRTRIM(sv) STMT_START { \
+ SV * sv_ = sv; \
+ if (SvPOK(sv_)) { \
+ STRLEN len = SvCUR(sv_); \
+ char * const p = SvPVX(sv_); \
+ while (len > 0 && isSPACE(p[len-1])) \
+ --len; \
+ SvCUR_set(sv_, len); \
+ p[len] = '\0'; \
+ } \
} STMT_END
void