From 6399b3d8f2528602156f1de07ba442ee3908af79 Mon Sep 17 00:00:00 2001 From: Paul Hollinsky Date: Tue, 30 Oct 2018 18:33:43 -0400 Subject: [PATCH] C API: Allow querying of specifically non-device errors --- api/icsneoc/icsneoc.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/api/icsneoc/icsneoc.cpp b/api/icsneoc/icsneoc.cpp index 0df047b..0186dc2 100644 --- a/api/icsneoc/icsneoc.cpp +++ b/api/icsneoc/icsneoc.cpp @@ -398,7 +398,7 @@ bool icsneo_getErrors(neoerror_t* errors, size_t* size) { } bool icsneo_getDeviceErrors(const neodevice_t* device, neoerror_t* errors, size_t* size) { - if(!icsneo_isValidNeoDevice(device)) { + if(device != nullptr && !icsneo_isValidNeoDevice(device)) { ErrorManager::GetInstance().add(APIError::InvalidNeoDevice); return false; } @@ -408,7 +408,8 @@ bool icsneo_getDeviceErrors(const neodevice_t* device, neoerror_t* errors, size_ return false; } - ErrorFilter filter = (icsneo::Device*)device->device; + // Creating the filter will nullptr is okay! It will find any errors not associated with a device. + ErrorFilter filter = (device != nullptr ? device->device : nullptr); if(errors == nullptr) { *size = icsneo::ErrorCount(filter); @@ -441,12 +442,15 @@ void icsneo_discardAllErrors(void) { } void icsneo_discardDeviceErrors(const neodevice_t* device) { - if(!icsneo_isValidNeoDevice(device)) { + if(device != nullptr && !icsneo_isValidNeoDevice(device)) { ErrorManager::GetInstance().add(APIError::InvalidNeoDevice); return; } - icsneo::DiscardErrors(icsneo::ErrorFilter((icsneo::Device*)device->device)); + if(device == nullptr) + icsneo::DiscardErrors(nullptr); // Discard errors not associated with a device + else + icsneo::DiscardErrors(device->device); } void icsneo_setErrorLimit(size_t newLimit) {