This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
correct pluralisation for "1 week"
[perl5.git] / util.c
diff --git a/util.c b/util.c
index c7ddd73..378ffe0 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1182,7 +1182,7 @@ Perl_savesharedpvn(pTHX_ const char *const pv, const STRLEN len)
 {
     char *const newaddr = (char*)PerlMemShared_malloc(len + 1);
 
-    PERL_ARGS_ASSERT_SAVESHAREDPVN;
+    /* PERL_ARGS_ASSERT_SAVESHAREDPVN; */
 
     if (!newaddr) {
        return write_no_mem();
@@ -4966,7 +4966,7 @@ Perl_upg_version(pTHX_ SV *ver, bool qv)
        setlocale(LC_NUMERIC, "C");
 #endif
        if (sv) {
-           Perl_sv_catpvf(aTHX_ sv, "%.9"NVff, SvNVX(ver));
+           Perl_sv_setpvf(aTHX_ sv, "%.9"NVff, SvNVX(ver));
            buf = SvPV(sv, len);
        }
        else {
@@ -5727,6 +5727,10 @@ Perl_parse_unicode_opts(pTHX_ const char **popt)
   return opt;
 }
 
+#ifdef VMS
+#  include <starlet.h>
+#endif
+
 U32
 Perl_seed(pTHX)
 {
@@ -5758,7 +5762,6 @@ Perl_seed(pTHX)
 #endif
     U32 u;
 #ifdef VMS
-#  include <starlet.h>
     /* when[] = (low 32 bits, high 32 bits) of time since epoch
      * in 100-ns units, typically incremented ever 10 ms.        */
     unsigned int when[2];
@@ -5854,25 +5857,28 @@ Perl_stashpv_hvname_match(pTHX_ const COP *c, const HV *hv)
 {
     const char * stashpv = CopSTASHPV(c);
     const char * name    = HvNAME_get(hv);
+    const bool utf8 = CopSTASH_len(c) < 0;
+    const I32  len  = utf8 ? -CopSTASH_len(c) : CopSTASH_len(c);
     PERL_UNUSED_CONTEXT;
     PERL_ARGS_ASSERT_STASHPV_HVNAME_MATCH;
 
     if (!stashpv || !name)
        return stashpv == name;
-    if ( HvNAMEUTF8(hv) && !(CopSTASH_flags(c) & SVf_UTF8 ? 1 : 0) ) {
-        if (CopSTASH_flags(c) & SVf_UTF8) {
+    if ( !HvNAMEUTF8(hv) != !utf8 ) {
+        if (utf8) {
             return (bytes_cmp_utf8(
-                        (const U8*)stashpv, strlen(stashpv),
+                        (const U8*)stashpv, len,
                         (const U8*)name, HEK_LEN(HvNAME_HEK(hv))) == 0);
         } else {
             return (bytes_cmp_utf8(
                         (const U8*)name, HEK_LEN(HvNAME_HEK(hv)),
-                        (const U8*)stashpv, strlen(stashpv)) == 0);
+                        (const U8*)stashpv, len) == 0);
         }
     }
     else
         return (stashpv == name
-                    || strEQ(stashpv, name));
+                    || (HEK_LEN(HvNAME_HEK(hv)) == len
+                        && memEQ(stashpv, name, len)));
     /*NOTREACHED*/
     return FALSE;
 }