git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9127
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
+static void gap_unknown(surf_action_network_CM02_t action) {
+ action->sender.gap = 0.0;
+ action->sender.link_name = NULL;
+ action->sender.fifo_item = NULL;
+ action->sender.size = 0.0;
+}
+
static void gap_remove(surf_action_network_CM02_t action) {
xbt_fifo_t fifo;
size_t size;
static void gap_remove(surf_action_network_CM02_t action) {
xbt_fifo_t fifo;
size_t size;
- if(sg_sender_gap > 0.0) {
+ if(sg_sender_gap > 0.0 && action->sender.link_name && action->sender.fifo_item) {
fifo = (xbt_fifo_t)xbt_dict_get_or_null(gap_lookup, action->sender.link_name);
xbt_fifo_remove_item(fifo, action->sender.fifo_item);
size = xbt_fifo_size(fifo);
fifo = (xbt_fifo_t)xbt_dict_get_or_null(gap_lookup, action->sender.link_name);
xbt_fifo_remove_item(fifo, action->sender.fifo_item);
size = xbt_fifo_size(fifo);
(*bandwidth_constraint_callback) (action->rate, bandwidth_bound,
size);
(*bandwidth_constraint_callback) (action->rate, bandwidth_bound,
size);
- link = *(link_CM02_t*)xbt_dynar_get_ptr(route, 0);
- gap_append(size, link, action);
- DEBUG5("Comm %p: %s -> %s gap=%f (lat=%f)",
- action, src_name, dst_name, action->sender.gap, action->latency);
+ if(xbt_dynar_length(route) > 0) {
+ link = *(link_CM02_t*)xbt_dynar_get_ptr(route, 0);
+ gap_append(size, link, action);
+ DEBUG5("Comm %p: %s -> %s gap=%f (lat=%f)",
+ action, src_name, dst_name, action->sender.gap, action->latency);
+ } else {
+ gap_unknown(action);
+ }