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)];
KeyButtons::const_iterator j = buttons.begin();
if (isToggle(mask)) {
// modifier is a toggle
if ((m_keys[*j] & kToggled) != 0) {
return true;
}
}
else {
// modifier is not a toggle
for (; j != buttons.end(); ++j) {
if ((m_keys[*j] & kDown) != 0) {
if (j != buttons.end()) {
if (isToggle(mask)) {
// modifier is a toggle
if ((m_keys[*j] & kToggled) != 0) {
return true;
}
}
else {
// modifier is not a toggle
for (; j != buttons.end(); ++j) {
if ((m_keys[*j] & kDown) != 0) {
return true;
}
}
}
}
return false;
}