Fixed crash bug in CKeyState. Would deference bogus pointer in
isModifierActive if there's an unmapped toggle modifier.
This commit is contained in:
parent
ceb654246c
commit
610518104b
|
@ -374,19 +374,21 @@ CKeyState::isModifierActive(KeyModifierMask mask) const
|
||||||
{
|
{
|
||||||
const KeyButtons& buttons = m_maskToKeys[getIndexForModifier(mask)];
|
const KeyButtons& buttons = m_maskToKeys[getIndexForModifier(mask)];
|
||||||
KeyButtons::const_iterator j = buttons.begin();
|
KeyButtons::const_iterator j = buttons.begin();
|
||||||
if (isToggle(mask)) {
|
if (j != buttons.end()) {
|
||||||
// modifier is a toggle
|
if (isToggle(mask)) {
|
||||||
if ((m_keys[*j] & kToggled) != 0) {
|
// modifier is a toggle
|
||||||
return true;
|
if ((m_keys[*j] & kToggled) != 0) {
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// modifier is not a toggle
|
|
||||||
for (; j != buttons.end(); ++j) {
|
|
||||||
if ((m_keys[*j] & kDown) != 0) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
// modifier is not a toggle
|
||||||
|
for (; j != buttons.end(); ++j) {
|
||||||
|
if ((m_keys[*j] & kDown) != 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue