From aff40f1fe3f794969ec0b80cd14cefd0d83cbe24 Mon Sep 17 00:00:00 2001 From: Takahiro Hirofuchi Date: Thu, 7 Nov 2013 16:08:08 +0100 Subject: [PATCH] Fix a segmentation fault at set_affinity --- src/msg/msg_task.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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); -- 2.20.1