diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 1999-08-02 10:32:01 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 1999-08-02 10:32:01 +0000 |
commit | 0f4b663008b5032408c35f3557d9d5c2790d3fcb (patch) | |
tree | 60ab7022a0c6f1632b74bf965475fcce8e70fe6b /sv.c | |
parent | f0d0442576ea74c58911be43ef48f5977fe2e1fa (diff) | |
download | perl-0f4b663008b5032408c35f3557d9d5c2790d3fcb.tar.gz |
More 64-bit fixing. One known bug of that kind
remains, 32-bit platforms using long long in
the test t/pragma/utf8 subtests 1-3 fail.
(Update: change #3884 fixed that one.)
p4raw-link: @3884 (not found)
p4raw-id: //depot/cfgperl@3880
Diffstat (limited to 'sv.c')
-rw-r--r-- | sv.c | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -5193,10 +5193,21 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV SV *msg = sv_newmortal(); Perl_sv_setpvf(aTHX_ msg, "Invalid conversion in %s: ", (PL_op->op_type == OP_PRTF) ? "printf" : "sprintf"); - if (c) - Perl_sv_catpvf(aTHX_ msg, isPRINT(c) ? "\"%%%c\"" : "\"%%\\%03o\"", - c & 0xFF); - else + if (c) { +#ifdef UV_IS_QUAD + if (isPRINT(c)) + Perl_sv_catpvf(aTHX_ msg, + "\"%%%c\"", c & 0xFF); + else + Perl_sv_catpvf(aTHX_ msg, + "\"%%\\%03" PERL_PRIo64 "\"", + (UV)c & 0xFF); +#else + Perl_sv_catpvf(aTHX_ msg, isPRINT(c) ? + "\"%%%c\"" : "\"%%\\%03o\"", + c & 0xFF); +#endif + } else sv_catpv(msg, "end of string"); Perl_warner(aTHX_ WARN_PRINTF, "%_", msg); /* yes, this is reentrant */ } |