From 8a2dd7f18e2c51f1cd9c66122f52b6571c586432 Mon Sep 17 00:00:00 2001 From: Mick Phillips Date: Thu, 20 Sep 2018 11:45:16 +0100 Subject: [PATCH] Check for success of registry operations in wxJoystick code Avoid reading wrong registry keys of REGSTR_VAL_JOYOEMNAME is not available. Closes https://github.com/wxWidgets/wxWidgets/pull/938 --- src/msw/joystick.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/msw/joystick.cpp b/src/msw/joystick.cpp index c21b41a426..b85db51640 100644 --- a/src/msw/joystick.cpp +++ b/src/msw/joystick.cpp @@ -332,13 +332,22 @@ wxString wxJoystick::GetProductName() const wxRegKey key1(wxString::Format(wxT("HKEY_LOCAL_MACHINE\\%s\\%s\\%s"), REGSTR_PATH_JOYCONFIG, joyCaps.szRegKey, REGSTR_KEY_JOYCURR)); - key1.QueryValue(wxString::Format(wxT("Joystick%d%s"), - m_joystick + 1, REGSTR_VAL_JOYOEMNAME), - str); + if ( key1.Exists() ) + { + key1.QueryValue(wxString::Format(wxT("Joystick%d%s"), + m_joystick + 1, REGSTR_VAL_JOYOEMNAME), + str); + } - wxRegKey key2(wxString::Format(wxT("HKEY_LOCAL_MACHINE\\%s\\%s"), - REGSTR_PATH_JOYOEM, str.c_str())); - key2.QueryValue(REGSTR_VAL_JOYOEMNAME, str); + if ( !str.empty() ) + { + wxRegKey key2(wxString::Format(wxT("HKEY_LOCAL_MACHINE\\%s\\%s"), + REGSTR_PATH_JOYOEM, str.c_str())); + if ( key2.Exists() ) + { + key2.QueryValue(REGSTR_VAL_JOYOEMNAME, str); + } + } #endif return str; }