@@ -345,6 +345,7 @@ static inline int install_packages(list_t *list, const char *dir, int verbose) {
345
345
list_node_t * node = NULL ;
346
346
list_iterator_t * iterator = NULL ;
347
347
int rc = -1 ;
348
+ list_t * freelist = NULL ;
348
349
349
350
if (!list || !dir )
350
351
goto cleanup ;
@@ -353,7 +354,7 @@ static inline int install_packages(list_t *list, const char *dir, int verbose) {
353
354
if (NULL == iterator )
354
355
goto cleanup ;
355
356
356
- list_t * freelist = list_new ();
357
+ freelist = list_new ();
357
358
358
359
while ((node = list_iterator_next (iterator ))) {
359
360
clib_package_dependency_t * dep = NULL ;
@@ -392,14 +393,17 @@ static inline int install_packages(list_t *list, const char *dir, int verbose) {
392
393
cleanup :
393
394
if (iterator )
394
395
list_iterator_destroy (iterator );
395
- iterator = list_iterator_new (freelist , LIST_HEAD );
396
- while ((node = list_iterator_next (iterator ))) {
397
- clib_package_t * pkg = node -> val ;
398
- if (pkg )
399
- clib_package_free (pkg );
396
+
397
+ if (freelist ) {
398
+ iterator = list_iterator_new (freelist , LIST_HEAD );
399
+ while ((node = list_iterator_next (iterator ))) {
400
+ clib_package_t * pkg = node -> val ;
401
+ if (pkg )
402
+ clib_package_free (pkg );
403
+ }
404
+ list_iterator_destroy (iterator );
405
+ list_destroy (freelist );
400
406
}
401
- list_iterator_destroy (iterator );
402
- list_destroy (freelist );
403
407
return rc ;
404
408
}
405
409
0 commit comments