Assigning undef to an entry in %ENV shouldn't produce warnings, even
Rafael Garcia-Suarez [Wed, 5 Apr 2006 19:45:42 +0000 (19:45 +0000)]
though it's silently converted to ""

p4raw-id: //depot/perl@27725

mg.c
t/lib/warnings/mg

diff --git a/mg.c b/mg.c
index 268e067..82f63c0 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -1042,8 +1042,8 @@ int
 Perl_magic_setenv(pTHX_ SV *sv, MAGIC *mg)
 {
     dVAR;
-    STRLEN len, klen;
-    const char *s = SvPV_const(sv,len);
+    STRLEN len = 0, klen;
+    const char *s = SvOK(sv) ? SvPV_const(sv,len) : "";
     const char * const ptr = MgPV_const(mg,klen);
     my_setenv(ptr, s);
 
index c6d7506..2e2d4aa 100644 (file)
@@ -55,3 +55,8 @@ use warnings 'uninitialized';
 length $3;
 EXPECT
 Use of uninitialized value $3 in length at - line 3.
+########
+# mg.c
+use warnings 'uninitialized';
+$ENV{FOO} = undef; # should not warn
+EXPECT