summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>2001-04-04 18:56:15 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>2001-04-04 18:56:15 +0000
commitae79846703a543a04b4fe449abfd6b1e08a9e149 (patch)
tree59573ff06500f775bc65ae7de289abbf3153dfbd
parent4a1add9022ee415d25c2a738be3ef391af77dfef (diff)
downloadperl-ae79846703a543a04b4fe449abfd6b1e08a9e149.tar.gz
Downgrade "Wide character in print" to a warning.
p4raw-id: //depot/perlio@9549
-rw-r--r--doio.c7
-rwxr-xr-xt/io/utf8.t5
2 files changed, 8 insertions, 4 deletions
diff --git a/doio.c b/doio.c
index f6566bb521..631149db41 100644
--- a/doio.c
+++ b/doio.c
@@ -1204,8 +1204,11 @@ Perl_do_print(pTHX_ register SV *sv, PerlIO *fp)
if (!SvUTF8(sv))
sv_utf8_upgrade(sv = sv_mortalcopy(sv));
}
- else if (DO_UTF8(sv))
- sv_utf8_downgrade((sv = sv_mortalcopy(sv)), FALSE);
+ else if (DO_UTF8(sv)) {
+ if (!sv_utf8_downgrade((sv = sv_mortalcopy(sv)), TRUE)) {
+ Perl_warner(aTHX_ WARN_UTF8, "Wide character in print");
+ }
+ }
tmps = SvPV(sv, len);
break;
}
diff --git a/t/io/utf8.t b/t/io/utf8.t
index 52b641d2f1..ac5cde7a6e 100755
--- a/t/io/utf8.t
+++ b/t/io/utf8.t
@@ -135,8 +135,9 @@ print "ok 21\n";
# Now let's make it suffer.
open F, ">", "a" or die $!;
-eval { print F $a; };
-print "not " unless $@ and $@ =~ /Wide character in print/i;
+my $w;
+eval {local $SIG{__WARN__} = sub { $w = $_[0] }; print F $a; };
+print "not " if ($@ || $w !~ /Wide character in print/i);
print "ok 22\n";
}