"no defined method \"set_route\" in \"%s\"",
current_routing->name);
current_routing->parse_route(current_routing, src, dst, route);
+ generic_free_route(route);
parsed_link_list = NULL;
src = NULL;
dst = NULL;
"no defined method \"set_ASroute\" in \"%s\"",
current_routing->name);
current_routing->parse_ASroute(current_routing, src, dst, e_route);
+ generic_free_route(e_route);
parsed_link_list = NULL;
src = NULL;
dst = NULL;
xbt_dict_free(&(as->generic_routing.to_index));
/* Delete dictionary index dict, predecessor and links table */
xbt_free(as->predecessor_table);
- /* Delete structure */
- xbt_free(rc);
+
+ model_generic_finalize(rc);
}
}
xbt_assert(ruleroute->re_src,
"PCRE compilation failed at offset %d (\"%s\"): %s\n",
erroffset, dst, error);
+
ruleroute->re_str_link = route->link_list;
+ route->link_list = NULL; // Don't free it twice in each container
+
xbt_dynar_push(routing->list_route, &ruleroute);
- xbt_free(route);
}
static void model_rulebased_parse_ASroute(AS_t rc,
ruleroute_e->re_src_gateway = route->src_gateway;
ruleroute_e->re_dst_gateway = route->dst_gateway;
xbt_dynar_push(routing->list_ASroute, &ruleroute_e);
-// xbt_free(route->src_gateway);
-// xbt_free(route->dst_gateway);
- xbt_free(route);
+
+ /* make sure that they don't get freed */
+ route->link_list = NULL;
+ route->src_gateway = route->dst_gateway = NULL;
}
static void model_rulebased_parse_bypassroute(AS_t rc,
xbt_dict_free(&routing->dict_autonomous_systems);
xbt_dynar_free(&routing->list_route);
xbt_dynar_free(&routing->list_ASroute);
- /* Delete structure */
- xbt_free(routing);
+
+ model_generic_finalize(rc);
}
}