|
29 | 29 | #include <string/stdstring.h> |
30 | 30 | #include <compat/strcasestr.h> |
31 | 31 |
|
| 32 | +static bool file_list_deinitialize_internal(file_list_t *list) |
| 33 | +{ |
| 34 | + size_t i; |
| 35 | + for (i = 0; i < list->size; i++) |
| 36 | + { |
| 37 | + file_list_free_userdata(list, i); |
| 38 | + file_list_free_actiondata(list, i); |
| 39 | + |
| 40 | + if (list->list[i].path) |
| 41 | + free(list->list[i].path); |
| 42 | + list->list[i].path = NULL; |
| 43 | + |
| 44 | + if (list->list[i].label) |
| 45 | + free(list->list[i].label); |
| 46 | + list->list[i].label = NULL; |
| 47 | + |
| 48 | + if (list->list[i].alt) |
| 49 | + free(list->list[i].alt); |
| 50 | + list->list[i].alt = NULL; |
| 51 | + } |
| 52 | + if (list->list) |
| 53 | + free(list->list); |
| 54 | + list->list = NULL; |
| 55 | + return true; |
| 56 | +} |
| 57 | + |
| 58 | +bool file_list_initialize(file_list_t *list) |
| 59 | +{ |
| 60 | + if (!list) |
| 61 | + return false; |
| 62 | + |
| 63 | + list->list = NULL; |
| 64 | + list->capacity = 0; |
| 65 | + list->size = 0; |
| 66 | + |
| 67 | + return true; |
| 68 | +} |
| 69 | + |
32 | 70 | bool file_list_reserve(file_list_t *list, size_t nitems) |
33 | 71 | { |
34 | 72 | const size_t item_size = sizeof(struct item_file); |
@@ -182,34 +220,23 @@ void file_list_pop(file_list_t *list, size_t *directory_ptr) |
182 | 220 |
|
183 | 221 | void file_list_free(file_list_t *list) |
184 | 222 | { |
185 | | - size_t i; |
186 | | - |
187 | 223 | if (!list) |
188 | 224 | return; |
189 | | - |
190 | | - for (i = 0; i < list->size; i++) |
191 | | - { |
192 | | - file_list_free_userdata(list, i); |
193 | | - file_list_free_actiondata(list, i); |
194 | | - |
195 | | - if (list->list[i].path) |
196 | | - free(list->list[i].path); |
197 | | - list->list[i].path = NULL; |
198 | | - |
199 | | - if (list->list[i].label) |
200 | | - free(list->list[i].label); |
201 | | - list->list[i].label = NULL; |
202 | | - |
203 | | - if (list->list[i].alt) |
204 | | - free(list->list[i].alt); |
205 | | - list->list[i].alt = NULL; |
206 | | - } |
207 | | - if (list->list) |
208 | | - free(list->list); |
209 | | - list->list = NULL; |
| 225 | + file_list_deinitialize_internal(list); |
210 | 226 | free(list); |
211 | 227 | } |
212 | 228 |
|
| 229 | +bool file_list_deinitialize(file_list_t *list) |
| 230 | +{ |
| 231 | + if (!list) |
| 232 | + return false; |
| 233 | + if (!file_list_deinitialize_internal(list)) |
| 234 | + return false; |
| 235 | + list->capacity = 0; |
| 236 | + list->size = 0; |
| 237 | + return true; |
| 238 | +} |
| 239 | + |
213 | 240 | void file_list_clear(file_list_t *list) |
214 | 241 | { |
215 | 242 | size_t i; |
|
0 commit comments