mirror of https://github.com/mgba-emu/mgba.git
Qt: Add additional checks in CheatModel to prevent crashes (fixes #163)
This commit is contained in:
parent
f8ff96e051
commit
cf0188b579
1
CHANGES
1
CHANGES
|
@ -14,6 +14,7 @@ Bugfixes:
|
||||||
- GBA Memory: Fix alignment of LDM/STM on SRAM
|
- GBA Memory: Fix alignment of LDM/STM on SRAM
|
||||||
- GBA: Initialize uninitialized pristineRom and pristineRomSize members
|
- GBA: Initialize uninitialized pristineRom and pristineRomSize members
|
||||||
- GBA Memory: Fix unaligned out-of-bounds ROM loads
|
- GBA Memory: Fix unaligned out-of-bounds ROM loads
|
||||||
|
- Qt: Add additional checks in CheatModel to prevent crashes
|
||||||
Misc:
|
Misc:
|
||||||
- GBA Audio: Implement missing flags on SOUNDCNT_X register
|
- GBA Audio: Implement missing flags on SOUNDCNT_X register
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,10 @@ QVariant CheatsModel::data(const QModelIndex& index, int role) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (index.row() >= GBACheatSetsSize(&m_device->cheats)) {
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
int row = index.row();
|
int row = index.row();
|
||||||
const GBACheatSet* cheats = *GBACheatSetsGetPointer(&m_device->cheats, index.row());
|
const GBACheatSet* cheats = *GBACheatSetsGetPointer(&m_device->cheats, index.row());
|
||||||
switch (role) {
|
switch (role) {
|
||||||
|
@ -56,7 +60,7 @@ QVariant CheatsModel::data(const QModelIndex& index, int role) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheatsModel::setData(const QModelIndex& index, const QVariant& value, int role) {
|
bool CheatsModel::setData(const QModelIndex& index, const QVariant& value, int role) {
|
||||||
if (!index.isValid() || index.parent().isValid()) {
|
if (!index.isValid() || index.parent().isValid() || index.row() > GBACheatSetsSize(&m_device->cheats)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,11 +143,14 @@ GBACheatSet* CheatsModel::itemAt(const QModelIndex& index) {
|
||||||
if (index.parent().isValid()) {
|
if (index.parent().isValid()) {
|
||||||
return static_cast<GBACheatSet*>(index.internalPointer());
|
return static_cast<GBACheatSet*>(index.internalPointer());
|
||||||
}
|
}
|
||||||
|
if (index.row() >= GBACheatSetsSize(&m_device->cheats)) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
return *GBACheatSetsGetPointer(&m_device->cheats, index.row());
|
return *GBACheatSetsGetPointer(&m_device->cheats, index.row());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheatsModel::removeAt(const QModelIndex& index) {
|
void CheatsModel::removeAt(const QModelIndex& index) {
|
||||||
if (!index.isValid() || index.parent().isValid()) {
|
if (!index.isValid() || index.parent().isValid() || index.row() >= GBACheatSetsSize(&m_device->cheats)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int row = index.row();
|
int row = index.row();
|
||||||
|
|
Loading…
Reference in New Issue