diff options
author | marha <marha@users.sourceforge.net> | 2013-02-11 08:02:10 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-02-11 08:02:10 +0100 |
commit | 8753441b3ba4316448e1ae5f408e6a84b0116a3c (patch) | |
tree | 8defe6bffed265e0846489015877f2384f022e67 /xorg-server/os/log.c | |
parent | 212958ab41363d50d87470f6fb47bbcdc7a74c74 (diff) | |
download | vcxsrv-8753441b3ba4316448e1ae5f408e6a84b0116a3c.tar.gz vcxsrv-8753441b3ba4316448e1ae5f408e6a84b0116a3c.tar.bz2 vcxsrv-8753441b3ba4316448e1ae5f408e6a84b0116a3c.zip |
xserver mesa git update 11 Feb 2013
xserver commit c1602d1c17967bdd4db9db19b3a9c0dfca6a58aa
mesa commit 990bd49fba7d539e950bdda6eb9819a9abf14850
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 4820e9a77..2697acec8 100644 --- a/xorg-server/os/log.c +++ b/xorg-server/os/log.c @@ -298,7 +298,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); @@ -345,7 +351,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++] = '%'; @@ -648,7 +663,7 @@ AbortServer(void) #endif CloseWellKnownConnections(); OsCleanup(TRUE); - CloseDownDevices(); + AbortDevices(); AbortDDX(EXIT_ERR_ABORT); fflush(stderr); if (CoreDump) |