summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>1999-08-02 10:32:01 +0000
committerJarkko Hietaniemi <jhi@iki.fi>1999-08-02 10:32:01 +0000
commit0f4b663008b5032408c35f3557d9d5c2790d3fcb (patch)
tree60ab7022a0c6f1632b74bf965475fcce8e70fe6b /sv.c
parentf0d0442576ea74c58911be43ef48f5977fe2e1fa (diff)
downloadperl-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.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/sv.c b/sv.c
index a7e3839952..2257516fae 100644
--- a/sv.c
+++ b/sv.c
@@ -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 */
}