From eecc8e06eb4bdfd4354144206d990cd9ccb69721 Mon Sep 17 00:00:00 2001 From: Jon TURNEY Date: Sat, 30 Oct 2010 17:22:33 +0100 Subject: [PATCH] hw/xwin/glx: Improvements to glxWinErrorMessage() reporting in WGL GLX provider Request the message using languageID 0 (best effort), rather than only using language neutral messages Always report the numeric error code. Trim any trailing \r from FormatMessage() output Reviewed-by: Colin Harrison Signed-off-by: Jon TURNEY --- hw/xwin/glx/indirect.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/hw/xwin/glx/indirect.c b/hw/xwin/glx/indirect.c index 720b2f00c..32322998c 100644 --- a/hw/xwin/glx/indirect.c +++ b/hw/xwin/glx/indirect.c @@ -211,22 +211,25 @@ static const char *glxWinErrorMessage(void) { static char errorbuffer[1024]; + unsigned int last_error = GetLastError(); if (!FormatMessage( - FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, - GetLastError(), - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + last_error, + 0, (LPTSTR) &errorbuffer, sizeof(errorbuffer), NULL )) { - snprintf(errorbuffer, sizeof(errorbuffer), "Unknown error in FormatMessage: %08x!", (unsigned)GetLastError()); + snprintf(errorbuffer, sizeof(errorbuffer), "Unknown error"); } - if (errorbuffer[strlen(errorbuffer)-1] == '\n') + if ((errorbuffer[strlen(errorbuffer)-1] == '\n') || (errorbuffer[strlen(errorbuffer)-1] == '\r')) errorbuffer[strlen(errorbuffer)-1] = 0; + sprintf(errorbuffer + strlen(errorbuffer), " (%08x)", last_error); + return errorbuffer; }