--- libpkg/pkg_config.c.orig	2013-12-16 08:52:39.000000000 +0100
+++ libpkg/pkg_config.c	2013-12-16 12:09:13.093549000 +0100
@@ -293,6 +293,7 @@
 static size_t c_size = sizeof(c) / sizeof(struct config_entry);
 
 static void		 pkg_config_kv_free(struct pkg_config_kv *);
+static void		 pkg_config_value_free(struct pkg_config_value *);
 static void pkg_config_free(struct pkg_config *conf);
 static struct pkg_repo	*pkg_repo_new(const char *name, const char *url);
 
@@ -440,7 +441,7 @@
 					continue;
 				}
 				if (!conf->fromenv) {
-					pkg_config_free(conf);
+					HASH_FREE(conf->list, pkg_config_value, pkg_config_value_free);
 					conf->list = NULL;
 					obj_walk_array(cur, conf);
 				}
@@ -452,7 +453,7 @@
 					continue;
 				}
 				if (!conf->fromenv) {
-					pkg_config_free(conf);
+					HASH_FREE(conf->kvlist, pkg_config_kv, pkg_config_kv_free);
 					conf->kvlist = NULL;
 					obj_walk_object(cur, conf);
 				}
