mirror of
git://sigrok.org/libserialport
synced 2023-08-10 21:13:24 +03:00
Always return an empty port list unless allocation fails.
This commit is contained in:
parent
e9a2f9c9d3
commit
24c1a4bb05
22
serialport.c
22
serialport.c
@ -45,14 +45,6 @@
|
|||||||
|
|
||||||
#include "serialport.h"
|
#include "serialport.h"
|
||||||
|
|
||||||
static char **sp_list_new(void)
|
|
||||||
{
|
|
||||||
char **list;
|
|
||||||
if ((list = malloc(sizeof(char *))))
|
|
||||||
list[0] = NULL;
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char **sp_list_append(char **list, void *data, size_t len)
|
static char **sp_list_append(char **list, void *data, size_t len)
|
||||||
{
|
{
|
||||||
void *tmp;
|
void *tmp;
|
||||||
@ -78,7 +70,12 @@ fail:
|
|||||||
*/
|
*/
|
||||||
char **sp_list_ports(void)
|
char **sp_list_ports(void)
|
||||||
{
|
{
|
||||||
char **list = NULL;
|
char **list;
|
||||||
|
|
||||||
|
if (!(list = malloc(sizeof(char *))))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
list[0] = NULL;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
HKEY key;
|
HKEY key;
|
||||||
@ -98,8 +95,6 @@ char **sp_list_ports(void)
|
|||||||
goto out_close;
|
goto out_close;
|
||||||
if (!(data = malloc((max_data_len + 1) * sizeof(TCHAR))))
|
if (!(data = malloc((max_data_len + 1) * sizeof(TCHAR))))
|
||||||
goto out_free_value;
|
goto out_free_value;
|
||||||
if (!(list = sp_list_new()))
|
|
||||||
goto out;
|
|
||||||
while (
|
while (
|
||||||
value_len = max_value_len,
|
value_len = max_value_len,
|
||||||
data_size = max_data_size,
|
data_size = max_data_size,
|
||||||
@ -146,9 +141,6 @@ out_close:
|
|||||||
if (!(path = malloc(PATH_MAX)))
|
if (!(path = malloc(PATH_MAX)))
|
||||||
goto out_release;
|
goto out_release;
|
||||||
|
|
||||||
if (!(list = sp_list_new()))
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
while ((port = IOIteratorNext(iter))) {
|
while ((port = IOIteratorNext(iter))) {
|
||||||
cf_path = IORegistryEntryCreateCFProperty(port,
|
cf_path = IORegistryEntryCreateCFProperty(port,
|
||||||
CFSTR(kIOCalloutDeviceKey), kCFAllocatorDefault, 0);
|
CFSTR(kIOCalloutDeviceKey), kCFAllocatorDefault, 0);
|
||||||
@ -189,8 +181,6 @@ out_release:
|
|||||||
udev_enumerate_add_match_subsystem(ud_enumerate, "tty");
|
udev_enumerate_add_match_subsystem(ud_enumerate, "tty");
|
||||||
udev_enumerate_scan_devices(ud_enumerate);
|
udev_enumerate_scan_devices(ud_enumerate);
|
||||||
ud_list = udev_enumerate_get_list_entry(ud_enumerate);
|
ud_list = udev_enumerate_get_list_entry(ud_enumerate);
|
||||||
if (!(list = sp_list_new()))
|
|
||||||
goto out;
|
|
||||||
udev_list_entry_foreach(ud_entry, ud_list)
|
udev_list_entry_foreach(ud_entry, ud_list)
|
||||||
{
|
{
|
||||||
path = udev_list_entry_get_name(ud_entry);
|
path = udev_list_entry_get_name(ud_entry);
|
||||||
|
Loading…
Reference in New Issue
Block a user