Don't put strings with embedded NULs in the environment.
Rafael Garcia-Suarez [Wed, 1 Mar 2006 22:39:24 +0000 (22:39 +0000)]
This makes things like -d:Foo=bar work again.

p4raw-id: //depot/perl@27359

perl.c

diff --git a/perl.c b/perl.c
index 7b6b4c7..d8077d6 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -3031,7 +3031,9 @@ Perl_moreswitches(pTHX_ char *s)
                sv_catpv(sv, start);
            else {
                sv_catpvn(sv, start, s-start);
-               Perl_sv_catpvf(aTHX_ sv, " split(/,/,q%c%s%c)", 0, ++s, 0);
+               /* Don't use NUL as q// delimiter here, this string goes in the
+                * environment. */
+               Perl_sv_catpvf(aTHX_ sv, " split(/,/,q{%s});", ++s);
            }
            s += strlen(s);
            my_setenv("PERL5DB", SvPV_nolen_const(sv));