On Fri, Jul 15, 2011 at 11:42 PM, Andreas Färber <andreas.faer...@web.de> wrote: > Am 15.07.2011 um 21:38 schrieb Stefan Weil: > >> Commit 953ffe0f935f40c0d6061d69e76e0339393b54f8 >> introduced FMT_pid which is wrong for w32 and w64 getpid(): >> those getpid() implementations always return an int value.
This is not in line with Posix: http://pubs.opengroup.org/onlinepubs/9699919799/functions/getpid.html#tag_16_243 > Where is __int64 FMT_pid used then if not for the returned pid? For shutdown_pid which is pid_t: src/qemu/vl.c:1200: fprintf(stderr, " from pid " FMT_pid "\n", shutdown_pid); > Andreas > >> >> Signed-off-by: Stefan Weil <w...@mail.berlios.de> >> --- >> os-win32.c | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/os-win32.c b/os-win32.c >> index b6652af..e153058 100644 >> --- a/os-win32.c >> +++ b/os-win32.c >> @@ -258,7 +258,7 @@ int qemu_create_pidfile(const char *filename) >> if (file == INVALID_HANDLE_VALUE) { >> return -1; >> } >> - len = snprintf(buffer, sizeof(buffer), FMT_pid "\n", getpid()); >> + len = snprintf(buffer, sizeof(buffer), "%d\n", getpid()); Another way would be to cast the result of getpid to pid_t. Then if the buggy getpid() implementations are fixed one day, there will be no truncation. >> ret = WriteFileEx(file, (LPCVOID)buffer, (DWORD)len, >> &overlap, NULL); >> if (ret == 0) { >> -- >> 1.7.2.5 >> >> > >