DigitalInput: Don't crash on Get() of invalid channel.

The constructor sets m_channel to UINT32_MAX and reports an error if the
channel index is out of range (or CheckDigitalChannel fails for some other
reason).  A Get() following this would result in a crash because it wasn't
checking StatusIsFatal().

The new behavior now checks StatusIsFatal() and simply returns false.

Change-Id: I15529401294e4ccd1e09df834e02cca367fab67c
This commit is contained in:
Peter Johnson
2015-11-30 22:44:48 -08:00
parent 61760c839a
commit 93b65aad36

View File

@@ -62,6 +62,7 @@ DigitalInput::~DigitalInput() {
* Retrieve the value of a single digital input channel from the FPGA.
*/
bool DigitalInput::Get() const {
if (StatusIsFatal()) return false;
int32_t status = 0;
bool value = getDIO(m_digital_ports[m_channel], &status);
wpi_setErrorWithContext(status, getHALErrorMessage(status));