X-Git-Url: https://git.ao2.it/libam7xxx.git/blobdiff_plain/25e8c0ca3422ca4c678e4ec2f6f10c57037d8163..3e874361f193d7ce9dec3971fd1d4923fea1a9a5:/src/am7xxx.c diff --git a/src/am7xxx.c b/src/am7xxx.c index eb715d3..512cf6f 100644 --- a/src/am7xxx.c +++ b/src/am7xxx.c @@ -1093,8 +1093,7 @@ AM7XXX_PUBLIC int am7xxx_init(am7xxx_context **ctx) *ctx = malloc(sizeof(**ctx)); if (*ctx == NULL) { fatal("cannot allocate the context (%s)\n", strerror(errno)); - ret = -ENOMEM; - goto out; + return -ENOMEM; } memset(*ctx, 0, sizeof(**ctx)); @@ -1214,10 +1213,9 @@ AM7XXX_PUBLIC int am7xxx_get_device_info(am7xxx_device *dev, int ret; struct am7xxx_header h; - if (dev->device_info) { - memcpy(device_info, dev->device_info, sizeof(*device_info)); - return 0; - } + /* if there is a cached copy of the device info, just return that */ + if (dev->device_info) + goto return_value; ret = send_command(dev, AM7XXX_PACKET_TYPE_DEVINFO); if (ret < 0) @@ -1251,6 +1249,9 @@ AM7XXX_PUBLIC int am7xxx_get_device_info(am7xxx_device *dev, dev->device_info->unknown1 = h.header_data.devinfo.unknown1; #endif +return_value: + if (device_info) + memcpy(device_info, dev->device_info, sizeof(*device_info)); return 0; }