mirror of
https://github.com/DCC-EX/CommandStation-EX.git
synced 2025-02-17 06:29:15 +01:00
protect from NULL pointer deref in ESP32 code when no MAIN rmt cannel is present
This commit is contained in:
parent
059fd1b193
commit
905b2c0148
@ -250,19 +250,27 @@ void DCCWaveform::schedulePacket(const byte buffer[], byte byteCount, byte repea
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
do {
|
do {
|
||||||
if(isMainTrack)
|
if(isMainTrack) {
|
||||||
ret = rmtMainChannel->RMTfillData(pendingPacket, pendingLength, pendingRepeats);
|
if (rmtMainChannel != NULL)
|
||||||
else
|
ret = rmtMainChannel->RMTfillData(pendingPacket, pendingLength, pendingRepeats);
|
||||||
ret = rmtProgChannel->RMTfillData(pendingPacket, pendingLength, pendingRepeats);
|
} else {
|
||||||
|
if (rmtProgChannel != NULL)
|
||||||
|
ret = rmtProgChannel->RMTfillData(pendingPacket, pendingLength, pendingRepeats);
|
||||||
|
}
|
||||||
} while(ret > 0);
|
} while(ret > 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DCCWaveform::getPacketPending() {
|
bool DCCWaveform::getPacketPending() {
|
||||||
if(isMainTrack)
|
if(isMainTrack) {
|
||||||
|
if (rmtMainChannel == NULL)
|
||||||
|
return true;
|
||||||
return rmtMainChannel->busy();
|
return rmtMainChannel->busy();
|
||||||
else
|
} else {
|
||||||
|
if (rmtProgChannel == NULL)
|
||||||
|
return true;
|
||||||
return rmtProgChannel->busy();
|
return rmtProgChannel->busy();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void IRAM_ATTR DCCWaveform::loop() {
|
void IRAM_ATTR DCCWaveform::loop() {
|
||||||
DCCACK::checkAck(progTrack.getResets());
|
DCCACK::checkAck(progTrack.getResets());
|
||||||
|
Loading…
Reference in New Issue
Block a user