[perl #35847] File::Find not performing as documented
[p5sagit/p5-mst-13.2.git] / perlio.c
index 8a23461..051c67f 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -475,8 +475,8 @@ PerlIO_debug(const char *fmt, ...)
        /* Use fixed buffer as sv_catpvf etc. needs SVs */
        char buffer[1024];
        const STRLEN len = my_sprintf(buffer, "%.40s:%" IVdf " ", s ? s : "(none)", (IV) CopLINE(PL_curcop));
-       vsprintf(buffer+len, fmt, ap);
-       PerlLIO_write(PL_perlio_debug_fd, buffer, strlen(buffer));
+       const STRLEN len2 = vsprintf(buffer+len, fmt, ap);
+       PerlLIO_write(PL_perlio_debug_fd, buffer, len + len2);
 #else
        const char *s = CopFILE(PL_curcop);
        STRLEN len;
@@ -1546,8 +1546,8 @@ PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd,
                Perl_croak(aTHX_ "More than one argument to open(,':%s')",tab->name);
            }
            PerlIO_debug("openn(%s,'%s','%s',%d,%x,%o,%p,%d,%p)\n",
-                        tab->name, layers, mode, fd, imode, perm,
-                        (void*)f, narg, (void*)args);
+                        tab->name, layers ? layers : "(Null)", mode, fd,
+                        imode, perm, (void*)f, narg, (void*)args);
            if (tab->Open)
                 f = (*tab->Open) (aTHX_ tab, layera, n, mode, fd, imode, perm,
                                   f, narg, args);
@@ -4785,7 +4785,7 @@ PerlIO *
 PerlIO_open(const char *path, const char *mode)
 {
     dTHX;
-    SV *name = sv_2mortal(newSVpvn(path, strlen(path)));
+    SV *name = sv_2mortal(newSVpv(path, 0));
     return PerlIO_openn(aTHX_ Nullch, mode, -1, 0, 0, NULL, 1, &name);
 }
 
@@ -4794,7 +4794,7 @@ PerlIO *
 PerlIO_reopen(const char *path, const char *mode, PerlIO *f)
 {
     dTHX;
-    SV *name = sv_2mortal(newSVpvn(path, strlen(path)));
+    SV *name = sv_2mortal(newSVpv(path,0));
     return PerlIO_openn(aTHX_ Nullch, mode, -1, 0, 0, f, 1, &name);
 }