if (local_only)
return SANE_STATUS_NO_MEM;
- if (device_info_ptr != NULL)
+ if (device_info_ptr != NULL) {
+ *device_list = device_info_ptr;
return SANE_STATUS_GOOD;
+ }
device_info_ptr = malloc(sizeof(SANE_Device*) * 2);
if (device_info_ptr == NULL)
return SANE_STATUS_NO_MEM;
device_info_ptr[0] = malloc(sizeof(SANE_Device));
- if (device_info_ptr[0] == NULL)
+ if (device_info_ptr[0] == NULL) {
+ free(device_info_ptr);
+ device_info_ptr = NULL;
return SANE_STATUS_NO_MEM;
+ }
device_info_ptr[0]->name = NAME;
device_info_ptr[0]->vendor = VENDOR;