1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-29 23:17:46 +00:00

Fix invalid row access in GearListModel

This was based off some previous, bad assumptions in Physis where a row
id of 0 was valid. Now we do proper null checks!
This commit is contained in:
Joshua Goins 2025-04-28 23:50:01 -04:00
parent a86ef69bdb
commit 928a77aab4

View file

@ -175,22 +175,26 @@ void GearListModel::exdFinished(int index)
auto exd = exdFuture->resultAt(index);
for (unsigned int i = 0; i < exh->row_count; i++) {
const auto row = physis_exd_read_row(&exd, i); // TODO: use all rows, free
auto primaryModel = row.row_data[0].column_data[47].u_int64._0;
const auto rows = physis_exd_read_row(&exd, i); // TODO: use all rows, free
for (int j = 0; j < rows.row_count; j++) {
auto row = rows.row_data[j];
if (row.column_data != nullptr) {
auto primaryModel = row.column_data[47].u_int64._0;
// auto secondaryModel = row.column_data[48].u_int64._0;
int16_t parts[4];
memcpy(parts, &primaryModel, sizeof(int16_t) * 4);
GearInfo info = {};
info.name = row.row_data[0].column_data[9].string._0;
info.icon = row.row_data[0].column_data[10].u_int16._0;
info.slot = physis_slot_from_id(row.row_data[0].column_data[17].u_int8._0);
info.name = row.column_data[9].string._0;
info.icon = row.column_data[10].u_int16._0;
info.slot = physis_slot_from_id(row.column_data[17].u_int8._0);
info.modelInfo.primaryID = parts[0];
gears.push_back(info);
}
}
}
}
void GearListModel::finished()