The length might be uninitialized garbage if the *svp is the undef.
Jarkko Hietaniemi [Sat, 24 Mar 2001 18:42:11 +0000 (18:42 +0000)]
p4raw-id: //depot/perl@9330

doio.c

diff --git a/doio.c b/doio.c
index d980dea..9dbb737 100644 (file)
--- a/doio.c
+++ b/doio.c
@@ -210,8 +210,8 @@ Perl_do_openn(pTHX_ GV *gv, register char *name, I32 len, int as_raw,
            *tend-- = '\0';
        if (num_svs) {
            /* New style explict name, type is just mode and discipline/layer info */
-           STRLEN l;
-           name = SvOK(*svp) ? SvPV(*svp, l) : "";
+           STRLEN l = 0;
+           name = SvOK(*svp) && (*svp != &PL_sv_undef) ? SvPV(*svp, l) : "";
            len = (I32)l;
            name = savepvn(name, len);
            SAVEFREEPV(name);