diff --git a/src/LScreens.c b/src/LScreens.c index 4867d614f..e83089d74 100644 --- a/src/LScreens.c +++ b/src/LScreens.c @@ -1546,7 +1546,7 @@ static void UpdatesScreen_Layout(struct LScreen* s_) { LWidget_SetLocation(&s->lblRel, ANCHOR_CENTRE, ANCHOR_CENTRE, -20, -75); LWidget_SetLocation(&s->btnRel[0], ANCHOR_CENTRE, ANCHOR_CENTRE, -80, -40); - if (Updater_D3D9) + if (Updater_D3D9) { LWidget_SetLocation(&s->btnRel[1], ANCHOR_CENTRE, ANCHOR_CENTRE, 80, -40); } else { LWidget_SetLocation(&s->btnRel[1], ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -40); diff --git a/src/Logger.c b/src/Logger.c index 4890bf703..8a7bea859 100644 --- a/src/Logger.c +++ b/src/Logger.c @@ -695,14 +695,26 @@ static LONG WINAPI Logger_UnhandledFilter(struct _EXCEPTION_POINTERS* pInfo) { String msg; char msgBuffer[128 + 1]; cc_uint32 code; cc_uintptr addr; + DWORD i, numArgs; code = (cc_uint32)pInfo->ExceptionRecord->ExceptionCode; addr = (cc_uintptr)pInfo->ExceptionRecord->ExceptionAddress; String_InitArray_NT(msg, msgBuffer); String_Format2(&msg, "Unhandled exception 0x%h at 0x%x", &code, &addr); - msg.buffer[msg.length] = '\0'; + numArgs = pInfo->ExceptionRecord->NumberParameters; + if (numArgs) { + numArgs = min(numArgs, EXCEPTION_MAXIMUM_PARAMETERS); + String_AppendConst(&msg, " ["); + + for (i = 0; i < numArgs; i++) { + String_Format1(&msg, "0x%x,", &pInfo->ExceptionRecord->ExceptionInformation[i]); + } + String_Append(&msg, ']'); + } + + msg.buffer[msg.length] = '\0'; Logger_AbortCommon(0, msg.buffer, pInfo->ContextRecord); return EXCEPTION_EXECUTE_HANDLER; /* TODO: different flag */ }