diff options
author | marha <marha@users.sourceforge.net> | 2013-02-11 08:04:06 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-02-11 08:04:06 +0100 |
commit | c4583f59d8460f05ee211c2f8ed6208addfe3087 (patch) | |
tree | 59420aaa7f249fcf3766adfab41e5285d48048e8 /xorg-server/os/log.c | |
parent | 71ff3367cab660035c6ea38e5171841dacd461b5 (diff) | |
parent | 8753441b3ba4316448e1ae5f408e6a84b0116a3c (diff) | |
download | vcxsrv-c4583f59d8460f05ee211c2f8ed6208addfe3087.tar.gz vcxsrv-c4583f59d8460f05ee211c2f8ed6208addfe3087.tar.bz2 vcxsrv-c4583f59d8460f05ee211c2f8ed6208addfe3087.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
xserver mesa git update 11 Feb 2013
Diffstat (limited to 'xorg-server/os/log.c')
-rw-r--r-- | xorg-server/os/log.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/xorg-server/os/log.c b/xorg-server/os/log.c index 23f181d8d..a65b03c66 100644 --- a/xorg-server/os/log.c +++ b/xorg-server/os/log.c @@ -304,7 +304,13 @@ pnprintf(char *string, size_t size, const char *f, va_list args) continue; } - switch (f[++f_idx]) { + f_idx++; + + /* silently swallow length modifiers */ + while (f_idx < f_len && ((f[f_idx] >= '0' && f[f_idx] <= '9') || f[f_idx] == '.')) + f_idx++; + + switch (f[f_idx]) { case 's': string_arg = va_arg(args, char*); p_len = strlen_sigsafe(string_arg); @@ -351,7 +357,16 @@ pnprintf(char *string, size_t size, const char *f, va_list args) for (i = 0; i < p_len && s_idx < size - 1; i++) string[s_idx++] = number[i]; break; - + case 'f': + { + double d = va_arg(args, double); + FormatDouble(d, number); + p_len = strlen_sigsafe(number); + + for (i = 0; i < p_len && s_idx < size - 1; i++) + string[s_idx++] = number[i]; + } + break; default: va_arg(args, char*); string[s_idx++] = '%'; @@ -654,7 +669,7 @@ AbortServer(void) #endif CloseWellKnownConnections(); OsCleanup(TRUE); - CloseDownDevices(); + AbortDevices(); AbortDDX(EXIT_ERR_ABORT); fflush(stderr); if (CoreDump) |