Fixed crash bug in CKeyState. Would deference bogus pointer in

isModifierActive if there's an unmapped toggle modifier.
This commit is contained in:
crs 2004-03-30 18:55:58 +00:00
parent ceb654246c
commit 610518104b
1 changed files with 12 additions and 10 deletions

View File

@ -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;
} }