// opkg_message(conf, OPKG_DEBUG2, "pkg %s: file=%s\n", pkg->name, installed_file);
file_hash_set_file_owner(conf, installed_file, pkg);
}
- //FIXME: mark this line. Thid avoid crash, But the reference count shall be balanced. (If there are some delay after file_hash_set_file_owner, it wont crash (Pondering why?))
- //pkg_free_installed_files(pkg);
+ pkg_free_installed_files(pkg);
}
pkg_vec_free(installed_pkgs);
// opkg_message(conf, OPKG_DEBUG2, "owning_pkg=%s filename=%s\n", owning_pkg->name, file_name);
hash_table_insert(file_hash, file_name, owning_pkg);
if (old_owning_pkg) {
+ pkg_get_installed_files(old_owning_pkg);
str_list_remove_elt(old_owning_pkg->installed_files, file_name);
+ pkg_free_installed_files(old_owning_pkg);
/* mark this package to have its filelist written */
old_owning_pkg->state_flag |= SF_FILELIST_CHANGED;
owning_pkg->state_flag |= SF_FILELIST_CHANGED;
+
}
return 0;
}
void_list_elt_t *old_elt = NULL;
void *old_data = NULL;
+ if (!list) {
+ fprintf(stderr, "Error: void_list_remove_elt list is NULL\n");
+ return NULL;
+ }
+ if (!target_data) {
+ fprintf(stderr, "Error: void_list_remove_elt target_data is NULL\n");
+ return NULL;
+ }
+
/* first element */
if (list->head && list->head->data && (cmp(list->head->data, target_data) == 0)) {
old_elt = list->head;