From: Takahiro Hirofuchi Date: Thu, 7 Nov 2013 15:08:08 +0000 (+0100) Subject: Fix a segmentation fault at set_affinity X-Git-Tag: v3_11_beta~297^2^2^2 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/aff40f1fe3f794969ec0b80cd14cefd0d83cbe24 Fix a segmentation fault at set_affinity --- diff --git a/src/msg/msg_task.c b/src/msg/msg_task.c index f995d10d64..ec9a0d307f 100644 --- a/src/msg/msg_task.c +++ b/src/msg/msg_task.c @@ -512,7 +512,12 @@ void MSG_task_set_affinity(msg_task_t task, msg_host_t host, unsigned long mask) if (mask == 0) { /* 0 means clear */ - xbt_dict_remove_ext(task->simdata->affinity_mask_db, (char *) host, sizeof(host)); + { + /* We need remove_ext() not throwing exception. */ + void *ret = xbt_dict_get_or_null_ext(task->simdata->affinity_mask_db, (char *) host, sizeof(msg_host_t)); + if (ret != NULL) + xbt_dict_remove_ext(task->simdata->affinity_mask_db, (char *) host, sizeof(host)); + } } else xbt_dict_set_ext(task->simdata->affinity_mask_db, (char *) host, sizeof(host), (void *) mask, NULL);