From 8717f0ad1a320720c716b7ff04aed1a8661b2e82 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sat, 25 Nov 2017 22:41:55 +0100 Subject: [PATCH] Fix issue for setting shared pointers if both dest & src point to the same object. --- m-i-shared.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/m-i-shared.h b/m-i-shared.h index f0d64798..b45ad7ec 100644 --- a/m-i-shared.h +++ b/m-i-shared.h @@ -135,8 +135,10 @@ M_C(name, _set)(type ** ptr, type *shared) \ { \ assert (ptr != NULL); \ - M_C(name, _clear)(*ptr); \ - *ptr = M_C(name, _init_set)(shared); \ + if (M_LIKELY (*ptr != shared)) { \ + M_C(name, _clear)(*ptr); \ + *ptr = M_C(name, _init_set)(shared); \ + } \ } \ \