diff options
-rw-r--r-- | src/or/circuitbuild.c | 8 | ||||
-rw-r--r-- | src/or/config.c | 16 | ||||
-rw-r--r-- | src/or/connection_edge.c | 11 |
3 files changed, 25 insertions, 10 deletions
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index e88a5a10f3..f1c5f1c2fb 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -1677,9 +1677,11 @@ void helper_nodes_free_all(void) { /* Don't call clear_helper_nodes(); that will flush our state change to disk */ - SMARTLIST_FOREACH(helper_nodes, helper_node_t *, h, tor_free(h)); - smartlist_free(helper_nodes); - helper_nodes = NULL; + if (helper_nodes) { + SMARTLIST_FOREACH(helper_nodes, helper_node_t *, h, tor_free(h)); + smartlist_free(helper_nodes); + helper_nodes = NULL; + } } /** How long (in seconds) do we allow a helper node to be nonfunctional before diff --git a/src/or/config.c b/src/or/config.c index 087f2c79d2..74ae93ce9f 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -394,11 +394,19 @@ set_options(or_options_t *new_val) void config_free_all(void) { - config_free(&options_format, global_options); - config_free(&state_format, global_state); + if (global_options) { + config_free(&options_format, global_options); + global_options = NULL; + } + if (global_state) { + config_free(&state_format, global_state); + global_state = NULL; + } tor_free(torrc_fname); - addr_policy_free(reachable_addr_policy); - reachable_addr_policy = NULL; + if (reachable_addr_policy) { + addr_policy_free(reachable_addr_policy); + reachable_addr_policy = NULL; + } } /** If options->SafeLogging is on, return a not very useful string, diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 431c6c8cdf..45a4ef5087 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -556,9 +556,14 @@ addressmap_clean(time_t now) void addressmap_free_all(void) { - strmap_free(addressmap, addressmap_ent_free); - addressmap = NULL; - strmap_free(virtaddress_reversemap, addressmap_virtaddress_ent_free); + if (addressmap) { + strmap_free(addressmap, addressmap_ent_free); + addressmap = NULL; + } + if (virtaddress_reversemap) { + strmap_free(virtaddress_reversemap, addressmap_virtaddress_ent_free); + virtaddress_reversemap = NULL; + } } /** Look at address, and rewrite it until it doesn't want any |