diff --git a/CMakeLists.txt b/CMakeLists.txt index c9c68e93..88f677c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ endif() project(PIP) set(PIP_MAJOR 5) set(PIP_MINOR 5) -set(PIP_REVISION 4) +set(PIP_REVISION 5) set(PIP_SUFFIX ) set(PIP_COMPANY SHS) set(PIP_DOMAIN org.SHS) diff --git a/libs/main/system/pihidevice.cpp b/libs/main/system/pihidevice.cpp index 78d3f1ff..e1c67818 100644 --- a/libs/main/system/pihidevice.cpp +++ b/libs/main/system/pihidevice.cpp @@ -122,6 +122,10 @@ bool PIHIDevice::open(const PIHIDeviceInfo & device) { return false; } HidD_GetPreparsedData(PRIVATE->deviceHandle, &PRIVATE->preparsed); + if (!PRIVATE->preparsed) { + close(); + return false; + } return true; #endif } @@ -524,6 +528,7 @@ PIVector PIHIDevice::allDevices(bool try_open) { PHIDP_PREPARSED_DATA preparsed = nullptr; if (HidD_GetPreparsedData(deviceHandle, &preparsed) == FALSE) { piCout << "HidD_GetPreparsedData error:" << errorString(); + CloseHandle(deviceHandle); continue; } // auto pp = PIByteArray(preparsed, 64);