[Browser] Fixed two crashes relating to invalid data

pull/172/head
Battlerax 8 years ago committed by Stanislav Zhukov
parent 76e866c5c9
commit c9dc75f589

@ -85,13 +85,12 @@ void NetController::setData(QString address, QJsonObject server, ServerModel *mo
model->setData(mi, server["passw"].toBool()); model->setData(mi, server["passw"].toBool());
mi = model->index(0, ServerData::PING); mi = model->index(0, ServerData::PING);
// This *should* fix a crash when a port isn't returned by data.
if(!address.contains(":")) // This *should* fix a crash when a port isn't returned by data.
{ if(!address.contains(":"))
address.append(":25565"); address.append(":25565");
} QStringList addr = address.split(":");
QStringList addr = address.split(":"); model->setData(mi, PingRakNetServer(addr[0].toLatin1().data(), addr[1].toUShort()));
model->setData(mi, PingRakNetServer(addr[0].toLatin1().data(), addr[1].toUShort()));
} }
bool NetController::downloadInfo(QAbstractItemModel *pModel, QModelIndex index) bool NetController::downloadInfo(QAbstractItemModel *pModel, QModelIndex index)
@ -229,6 +228,8 @@ void NetController::updateInfo()
sd->players = map["players"].toInt(); sd->players = map["players"].toInt();
sd->maxPlayers = map["max_players"].toInt(); sd->maxPlayers = map["max_players"].toInt();
if(!sd->addr.contains(":"))
sd->addr.append(":25565");
QStringList addr = sd->addr.split(":"); QStringList addr = sd->addr.split(":");
sd->ping = PingRakNetServer(addr[0].toLatin1(), addr[1].toUShort()); sd->ping = PingRakNetServer(addr[0].toLatin1(), addr[1].toUShort());
if(sd->ping != PING_UNREACHABLE) if(sd->ping != PING_UNREACHABLE)

@ -22,15 +22,18 @@ void ServerInfoDialog::refresh()
{ {
NetController::get()->updateInfo(); NetController::get()->updateInfo();
ServerData *sd = NetController::get()->selectedServer(); ServerData *sd = NetController::get()->selectedServer();
leAddr->setText(sd->addr); if (sd)
lblName->setText(sd->hostName); {
lblPing->setNum(sd->ping); leAddr->setText(sd->addr);
lblName->setText(sd->hostName);
listPlayers->clear(); lblPing->setNum(sd->ping);
QStringList players = NetController::get()->players();
listPlayers->addItems(players); listPlayers->clear();
listPlugins->clear(); QStringList players = NetController::get()->players();
listPlugins->addItems(NetController::get()->plugins()); listPlayers->addItems(players);
listPlugins->clear();
lblPlayers->setText(QString::number(players.size()) + " / " + QString::number(sd->maxPlayers)); listPlugins->addItems(NetController::get()->plugins());
lblPlayers->setText(QString::number(players.size()) + " / " + QString::number(sd->maxPlayers));
}
} }

Loading…
Cancel
Save