if (result)
return result;
len = strlen(a->id_file_name);
- if (len >= 3 && memcmp(a->id_file_name + len - 3, ".gz", 3) != 0)
+ if (len < 3 || memcmp(a->id_file_name + len - 3, ".gz", 3) != 0)
return result;
new_name = malloc(len - 2);
memcpy(new_name, a->id_file_name, len - 3);
return 1;
}
-void pci_set_name_list_path(struct pci_access *a, char *name, int to_be_freed)
+void
+pci_free_name_list(struct pci_access *a)
+{
+ pci_id_cache_flush(a);
+ pci_id_hash_free(a);
+ pci_id_hwdb_free(a);
+ a->id_load_failed = 0;
+}
+
+void
+pci_set_name_list_path(struct pci_access *a, char *name, int to_be_freed)
{
if (a->free_id_name)
free(a->id_file_name);