Safer implementation of RTRIM().
Gisle Aas [Fri, 27 Jan 2006 08:49:34 +0000 (08:49 +0000)]
Don't rely on SvCUR to be sane unless SvPOK.

p4raw-id: //depot/perl@26953

mg.c

diff --git a/mg.c b/mg.c
index 8cfe86d..8efed16 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -641,9 +641,9 @@ Perl_magic_len(pTHX_ SV *sv, MAGIC *mg)
 }
 
 #define SvRTRIM(sv) STMT_START { \
-    STRLEN len = SvCUR(sv); \
-    char * const p = SvPVX(sv); \
-    if (p) { \
+    if (SvPOK(sv)) { \
+        STRLEN len = SvCUR(sv); \
+        char * const p = SvPVX(sv); \
        while (len > 0 && isSPACE(p[len-1])) \
           --len; \
        SvCUR_set(sv, len); \