[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Re: [PATCH] win32: use PRId64 instead of %lld
From: |
Stefan Weil |
Subject: |
Re: [Qemu-devel] Re: [PATCH] win32: use PRId64 instead of %lld |
Date: |
Mon, 25 Jan 2010 20:41:09 +0100 |
User-agent: |
Mozilla-Thunderbird 2.0.0.22 (X11/20090707) |
Stefan Weil schrieb:
> Michael S. Tsirkin schrieb:
>> On Sun, Jan 24, 2010 at 09:23:41PM +0000, Herve Poussineau wrote:
>>> Replace %lld occurrences by PRId64.
>> This is wrong.
>> long long values should be printed with %lld.
>> size_t - with %zd. PRId64 is for int64_t.
>>
>
> size_t => %zu, ssize_t => %zd might be better.
>
> And none of them works on win32, so using them
> there can result in a crash:
>
> size_t st = 4711;
> fprintf(stderr, "st=%zu, %s\n", st, "test");
>
> printf functions on win32 don't know %z.
> They run
>
> fprintf(stderr, "st=zu, %s\n", st, "test");
>
> which results in an memory access fault when printf
> wants to read the memory at address 0x4711.
>
> Regards,
> Stefan Weil
>
>
Hi,
I just read this which could explain crashes with %lld:
/* MSVCRT supports additional length specifiers for "printf". (In
fact, it does not support some of the C99 specifiers, like
"ll". However, we do not presently have a mechanism for disabling
a specifier.) */
A short test:
long long ll = 0;
printf("ll=%lld, string=%s\n", ll, "test");
ll=0, string=(null)
=> You can crash QEMU for win32 with %lld.
Regards,
Stefan
- Re: [Qemu-devel] Re: [PATCH] win32: use PRId64 instead of %lld, (continued)
Re: [Qemu-devel] Re: [PATCH] win32: use PRId64 instead of %lld, Stefan Weil, 2010/01/25
Re: [Qemu-devel] Re: [PATCH] win32: use PRId64 instead of %lld, Daniel P. Berrange, 2010/01/25
Re: [Qemu-devel] Re: [PATCH] win32: use PRId64 instead of %lld,
Stefan Weil <=
Re: [Qemu-devel] [PATCH] win32: use PRId64 instead of %lld, Anthony Liguori, 2010/01/26