diff options
-rw-r--r-- | doio.c | 3 | ||||
-rw-r--r-- | pod/perldiag.pod | 4 | ||||
-rw-r--r-- | sv.c | 9 |
3 files changed, 14 insertions, 2 deletions
@@ -1186,6 +1186,9 @@ Perl_do_print(pTHX_ register SV *sv, PerlIO *fp) } /* FALL THROUGH */ default: + /* XXX Fix this when the I/O disciplines arrive. XXX */ + if (DO_UTF8(sv)) + sv_utf8_downgrade(sv, FALSE); tmps = SvPV(sv, len); break; } diff --git a/pod/perldiag.pod b/pod/perldiag.pod index c4d26548bc..480ab8492d 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -3822,6 +3822,10 @@ but in actual fact, you got So put in parentheses to say what you really mean. +=item Wide character in %s + +(F) Perl met a wide character (>255) when it wasn't expecting one. + =item write() on closed filehandle %s (W closed) The filehandle you're writing to got itself closed sometime @@ -2448,8 +2448,13 @@ Perl_sv_utf8_downgrade(pTHX_ register SV* sv, bool fail_ok) if (!utf8_to_bytes((U8*)c, &len)) { if (fail_ok) return FALSE; - else - Perl_croak(aTHX_ "big byte"); + else { + if (PL_op) + Perl_croak(aTHX_ "Wide character in %s", + PL_op_desc[PL_op->op_type]); + else + Perl_croak(aTHX_ "Wide character"); + } } SvCUR(sv) = len - 1; SvUTF8_off(sv); |