From a9b0ddd7803f4c32cc0389426318aa22bd34ac06 Mon Sep 17 00:00:00 2001 From: Andre Lorbach Date: Tue, 26 Jul 2011 12:20:41 +0200 Subject: Experimentally added mutex lock in getMSGID in order to fix bug 275. --- runtime/msg.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'runtime') diff --git a/runtime/msg.c b/runtime/msg.c index d1e67aa2..f5f7fee1 100644 --- a/runtime/msg.c +++ b/runtime/msg.c @@ -1629,14 +1629,20 @@ finalize_it: } -/* rgerhards, 2005-11-24 +/* al, 2011-07-26: LockMsg to avoid race conditions */ static inline char *getMSGID(msg_t *pM) { - return (pM->pCSMSGID == NULL) ? "-" : (char*) rsCStrGetSzStrNoNULL(pM->pCSMSGID); + if (pM->pCSMSGID == NULL) { + return "-"; + } + else { + MsgLock(pM); + return (char*) rsCStrGetSzStrNoNULL(pM->pCSMSGID); + MsgUnlock(pM); + } } - /* rgerhards 2009-06-12: set associated ruleset */ void MsgSetRuleset(msg_t *pMsg, ruleset_t *pRuleset) -- cgit From d66f7b95e081ecb356cc230685c5b7c90f8590b4 Mon Sep 17 00:00:00 2001 From: Andre Lorbach Date: Wed, 27 Jul 2011 09:35:14 +0200 Subject: Fixed a stupid return bug introduced by the last commit --- runtime/msg.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'runtime') diff --git a/runtime/msg.c b/runtime/msg.c index f5f7fee1..c93847ef 100644 --- a/runtime/msg.c +++ b/runtime/msg.c @@ -1638,8 +1638,9 @@ static inline char *getMSGID(msg_t *pM) } else { MsgLock(pM); - return (char*) rsCStrGetSzStrNoNULL(pM->pCSMSGID); + char* pszreturn = rsCStrGetSzStrNoNULL(pM->pCSMSGID); MsgUnlock(pM); + return (char*) pszreturn; } } -- cgit From 37f5a7376a8e259d3ccbd2bd01aac3b2824c4a7e Mon Sep 17 00:00:00 2001 From: Andre Lorbach Date: Wed, 27 Jul 2011 17:19:00 +0200 Subject: Cosmetic change --- runtime/msg.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'runtime') diff --git a/runtime/msg.c b/runtime/msg.c index c93847ef..36c958ec 100644 --- a/runtime/msg.c +++ b/runtime/msg.c @@ -1638,9 +1638,9 @@ static inline char *getMSGID(msg_t *pM) } else { MsgLock(pM); - char* pszreturn = rsCStrGetSzStrNoNULL(pM->pCSMSGID); + char* pszreturn = (char*) rsCStrGetSzStrNoNULL(pM->pCSMSGID); MsgUnlock(pM); - return (char*) pszreturn; + return pszreturn; } } -- cgit