summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sv.c b/sv.c
index d416b1bda1..83c2d4e610 100644
--- a/sv.c
+++ b/sv.c
@@ -1127,9 +1127,10 @@ S_new_body(pTHX_ void **arena_root, void **root, size_t size)
#define del_body(thing, root) \
STMT_START { \
+ void **thing_copy = (void **)thing; \
LOCK_SV_MUTEX; \
- *(void **)thing = *root; \
- *root = (void*)thing; \
+ *thing_copy = *root; \
+ *root = (void*)thing_copy; \
UNLOCK_SV_MUTEX; \
} STMT_END