X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fudev%2Fudevadm-hwdb.c;h=65cbf618656a970ec447b2eed276625a77753c0c;hp=16abbe8d2f3b29349d43c5670029a5ecec6fa609;hb=e70bc43cdf75b36e7ad3d29e9a6f8ee1461e7d5e;hpb=955d98c9c1104d469c2989dbfb58f58ee6fe9bdc diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index 16abbe8d2..65cbf6186 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -341,7 +341,7 @@ static int trie_store(struct trie *trie, const char *filename) { struct trie_f t = { .trie = trie, }; - char *filename_tmp; + _cleanup_free_ char *filename_tmp = NULL; int64_t pos; int64_t root_off; int64_t size; @@ -385,8 +385,8 @@ static int trie_store(struct trie *trie, const char *filename) { err = -errno; fclose(t.f); if (err < 0 || rename(filename_tmp, filename) < 0) { - unlink(filename_tmp); - goto out; + unlink_noerrno(filename_tmp); + return err < 0 ? err : -errno; } log_debug("=== trie on-disk ==="); @@ -400,9 +400,8 @@ static int trie_store(struct trie *trie, const char *filename) { t.values_count * sizeof(struct trie_value_entry_f), t.values_count); log_debug("string store: %8zu bytes", trie->strings->len); log_debug("strings start: %8"PRIu64, t.strings_off); -out: - free(filename_tmp); - return err; + + return 0; } static int insert_data(struct trie *trie, struct udev_list *match_list,