From b71b378dc4580dc8773d8b065c2dbc4f9e701028 Mon Sep 17 00:00:00 2001 From: "graham.gower@gmail.com" Date: Tue, 22 Feb 2011 03:39:04 +0000 Subject: [PATCH] Fix opkg_re_read_config_files(). This fixes segfaults when opkg_update_package_lists() is called multiple times. git-svn-id: http://opkg.googlecode.com/svn/trunk@609 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358 --- libopkg/opkg.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/libopkg/opkg.c b/libopkg/opkg.c index 574386e..0757370 100644 --- a/libopkg/opkg.c +++ b/libopkg/opkg.c @@ -112,11 +112,14 @@ curl_progress_cb(struct _curl_cb_data *cb_data, double t, /* dltotal */ } +static struct opkg_conf saved_conf; /*** Public API ***/ int opkg_new() { + saved_conf = *conf; + if (opkg_conf_init()) goto err0; @@ -150,20 +153,9 @@ opkg_free(void) int opkg_re_read_config_files(void) { - pkg_hash_deinit(); - pkg_hash_init(); - - if (pkg_hash_load_feeds()) - goto err; - - if (pkg_hash_load_status_files()) - goto err; - - return 0; - -err: - pkg_hash_deinit(); - return -1; + opkg_free(); + *conf = saved_conf; + return opkg_new(); } void -- 2.30.2