strv: get rid of strv_clear()
Let's remove a function of questionnable utility. strv_clear() frees the items of a string array, but not the array itself. i.e. it half-drestructs a string array and makes it empty. This is not too useful an operation since we almost never need to just do that, we also want to free the whole thing. In fact, strv_clear() is only used in one of our .c file, and there it appears like unnecessary optimization, given that for each array with n elements it leaves the number of free()s we need to at O(n) which is not really an optimization at all (it goes from n+1 to n, that's all). Prompted by the discussions on #14605
This commit is contained in:
parent
cdc6804b60
commit
2e5180d38b
|
@ -57,20 +57,15 @@ char *strv_find_startswith(char * const *l, const char *name) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void strv_clear(char **l) {
|
||||
char **strv_free(char **l) {
|
||||
char **k;
|
||||
|
||||
if (!l)
|
||||
return;
|
||||
return NULL;
|
||||
|
||||
for (k = l; *k; k++)
|
||||
free(*k);
|
||||
|
||||
*l = NULL;
|
||||
}
|
||||
|
||||
char **strv_free(char **l) {
|
||||
strv_clear(l);
|
||||
return mfree(l);
|
||||
}
|
||||
|
||||
|
|
|
@ -25,8 +25,6 @@ char **strv_free_erase(char **l);
|
|||
DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free_erase);
|
||||
#define _cleanup_strv_free_erase_ _cleanup_(strv_free_erasep)
|
||||
|
||||
void strv_clear(char **l);
|
||||
|
||||
char **strv_copy(char * const *l);
|
||||
size_t strv_length(char * const *l) _pure_;
|
||||
|
||||
|
|
|
@ -543,7 +543,7 @@ static int import_file(struct trie *trie, const char *filename, uint16_t file_pr
|
|||
"Property expected, ignoring record with no properties");
|
||||
r = -EINVAL;
|
||||
state = HW_NONE;
|
||||
strv_clear(match_list);
|
||||
match_list = strv_free(match_list);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -571,7 +571,7 @@ static int import_file(struct trie *trie, const char *filename, uint16_t file_pr
|
|||
if (len == 0) {
|
||||
/* end of record */
|
||||
state = HW_NONE;
|
||||
strv_clear(match_list);
|
||||
match_list = strv_free(match_list);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -580,7 +580,7 @@ static int import_file(struct trie *trie, const char *filename, uint16_t file_pr
|
|||
"Property or empty line expected, got \"%s\", ignoring record", line);
|
||||
r = -EINVAL;
|
||||
state = HW_NONE;
|
||||
strv_clear(match_list);
|
||||
match_list = strv_free(match_list);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue