From: Martin Ling Date: Mon, 20 Jan 2020 01:42:00 +0000 (+0000) Subject: windows: Handle the case where there are no serial ports at all. X-Git-Tag: libserialport-0.1.2~58 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=8488868187ed26f8abd057775ff3cfd2aaf7ea35;p=libserialport.git windows: Handle the case where there are no serial ports at all. It's possible for the HARDWARE\DEVICEMAP\SERIALCOMM key to not exist in the registry if there are no serial ports at all and never have been, as discovered on my rather minimalist gaming machine. Handle that case gracefully and return an empty list. --- diff --git a/windows.c b/windows.c index a9d0927..53c1b02 100644 --- a/windows.c +++ b/windows.c @@ -491,8 +491,12 @@ SP_PRIV enum sp_return list_ports(struct sp_port ***list) DEBUG("Opening registry key"); if ((result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DEVICEMAP\\SERIALCOMM"), 0, KEY_QUERY_VALUE, &key)) != ERROR_SUCCESS) { - SetLastError(result); - SET_FAIL(ret, "RegOpenKeyEx() failed"); + /* It's possible for this key to not exist if there are no serial ports + * at all. In that case we're done. Return a failure for any other error. */ + if (result != ERROR_FILE_NOT_FOUND) { + SetLastError(result); + SET_FAIL(ret, "RegOpenKeyEx() failed"); + } goto out_done; } DEBUG("Querying registry key value and data sizes");