Fix crash with missing airport in ATC
Sentry-Id: FLIGHTGEAR-ER
This commit is contained in:
parent
e0bd74e982
commit
3b01aaf33f
2 changed files with 23 additions and 18 deletions
|
@ -615,30 +615,32 @@ void FGATCController::transmit(FGTrafficRecord * rec, FGAirportDynamics *parent,
|
|||
}
|
||||
|
||||
SG_LOG(SG_ATC, SG_DEBUG, "transmitting for: " << sender << "Leg = " << rec->getLeg());
|
||||
|
||||
auto depApt = rec->getAircraft()->getTrafficRef()->getDepartureAirport();
|
||||
|
||||
switch (rec->getLeg()) {
|
||||
case 1:
|
||||
case 2:
|
||||
// avoid crash FLIGHTGEAR-ER
|
||||
if (!depApt) {
|
||||
SG_LOG(SG_ATC, SG_DEV_ALERT, "TrafficRec has empty departure airport, can't transmit");
|
||||
return;
|
||||
}
|
||||
|
||||
freqId = rec->getNextFrequency();
|
||||
stationFreq =
|
||||
rec->getAircraft()->getTrafficRef()->getDepartureAirport()->
|
||||
getDynamics()->getGroundFrequency(rec->getLeg() + freqId);
|
||||
taxiFreq =
|
||||
rec->getAircraft()->getTrafficRef()->getDepartureAirport()->
|
||||
getDynamics()->getGroundFrequency(2);
|
||||
towerFreq =
|
||||
rec->getAircraft()->getTrafficRef()->getDepartureAirport()->
|
||||
getDynamics()->getTowerFrequency(2);
|
||||
receiver =
|
||||
rec->getAircraft()->getTrafficRef()->getDepartureAirport()->
|
||||
getName() + "-Ground";
|
||||
atisInformation =
|
||||
rec->getAircraft()->getTrafficRef()->getDepartureAirport()->
|
||||
getDynamics()->getAtisSequence();
|
||||
stationFreq = depApt->getDynamics()->getGroundFrequency(rec->getLeg() + freqId);
|
||||
taxiFreq = depApt->getDynamics()->getGroundFrequency(2);
|
||||
towerFreq = depApt->getDynamics()->getTowerFrequency(2);
|
||||
receiver = depApt->getName() + "-Ground";
|
||||
atisInformation = depApt->getDynamics()->getAtisSequence();
|
||||
break;
|
||||
case 3:
|
||||
receiver =
|
||||
rec->getAircraft()->getTrafficRef()->getDepartureAirport()->
|
||||
getName() + "-Tower";
|
||||
if (!depApt) {
|
||||
SG_LOG(SG_ATC, SG_DEV_ALERT, "TrafficRec has empty departure airport, can't transmit");
|
||||
return;
|
||||
}
|
||||
|
||||
receiver = depApt->getName() + "-Tower";
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -103,6 +103,9 @@ FGAirportDynamicsRef AirportDynamicsManager::find(const std::string &icao)
|
|||
|
||||
FGAirportDynamicsRef AirportDynamicsManager::find(const FGAirportRef& apt)
|
||||
{
|
||||
if (!apt)
|
||||
return {};
|
||||
|
||||
return find(apt->ident());
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue