@@ -345,6 +345,7 @@ static inline int install_packages(list_t *list, const char *dir, int verbose) {
345345 list_node_t * node = NULL ;
346346 list_iterator_t * iterator = NULL ;
347347 int rc = -1 ;
348+ list_t * freelist = NULL ;
348349
349350 if (!list || !dir )
350351 goto cleanup ;
@@ -353,7 +354,7 @@ static inline int install_packages(list_t *list, const char *dir, int verbose) {
353354 if (NULL == iterator )
354355 goto cleanup ;
355356
356- list_t * freelist = list_new ();
357+ freelist = list_new ();
357358
358359 while ((node = list_iterator_next (iterator ))) {
359360 clib_package_dependency_t * dep = NULL ;
@@ -392,14 +393,17 @@ static inline int install_packages(list_t *list, const char *dir, int verbose) {
392393cleanup :
393394 if (iterator )
394395 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 );
400406 }
401- list_iterator_destroy (iterator );
402- list_destroy (freelist );
403407 return rc ;
404408}
405409
0 commit comments