aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/circuitbuild.c8
-rw-r--r--src/or/config.c16
-rw-r--r--src/or/connection_edge.c11
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