diff --git a/src/kits/device/SerialPort.cpp b/src/kits/device/SerialPort.cpp index 09e6c705bd..60482300ba 100644 --- a/src/kits/device/SerialPort.cpp +++ b/src/kits/device/SerialPort.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -18,6 +19,7 @@ #include #include + /* The directory where the serial driver publishes its devices */ #define SERIAL_DIR "/dev/ports" @@ -62,7 +64,7 @@ BSerialPort::BSerialPort() fFlow(B_HARDWARE_CONTROL), fTimeout(B_INFINITE_TIMEOUT), fBlocking(true), - _fDevices(new BList) + _fDevices(new(std::nothrow) BList) { ScanDevices(); } @@ -479,9 +481,15 @@ BSerialPort::WaitForInput(void) int32 BSerialPort::CountDevices() { + int32 count = 0; + // Refresh devices list ScanDevices(); - return _fDevices->CountItems(); + + if (_fDevices != NULL) + count = _fDevices->CountItems(); + + return count; }