Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/intern/blender.c7
-rw-r--r--source/blender/blenlib/BLI_utildefines.h25
2 files changed, 14 insertions, 18 deletions
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index 05c1a675f47..50764e10ceb 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -252,7 +252,12 @@ void BKE_blender_userdef_app_template_data_swap(UserDef *userdef_a, UserDef *use
*/
#define DATA_SWAP(id) \
- SWAP(userdef_a->id, userdef_b->id);
+ { \
+ UserDef userdef_tmp; \
+ memcpy(&(userdef_tmp.id), &(userdef_a->id), sizeof(userdef_tmp.id)); \
+ memcpy(&(userdef_a->id), &(userdef_b->id), sizeof(userdef_tmp.id)); \
+ memcpy(&(userdef_b->id), &(userdef_tmp.id), sizeof(userdef_tmp.id)); \
+ }
#define LIST_SWAP(id) { \
SWAP(ListBase, userdef_a->id, userdef_b->id); \
diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h
index ec6042637aa..8f8d7cc3b7f 100644
--- a/source/blender/blenlib/BLI_utildefines.h
+++ b/source/blender/blenlib/BLI_utildefines.h
@@ -140,24 +140,15 @@ extern "C" {
/* some math and copy defines */
-#define _VA_SWAP3(type, a, b) { \
- CHECK_TYPE(a, type); \
- CHECK_TYPE(b, type); \
- type SWAP = (a); \
- (a) = (b); \
- (b) = SWAP; \
-} (void)0
-
-#define _VA_SWAP2(a, b) { \
- CHECK_TYPE_PAIR(a, b); \
- struct { char a_[sizeof(a)]; } SWAP, *a_ = (void *)&(a), *b_ = (void *)&(b); \
- SWAP = *a_; \
- *a_ = *b_; \
- *b_ = SWAP; \
-} ((void)0)
-/* SWAP with two or three args (initial type argument is optional) */
-#define SWAP(...) VA_NARGS_CALL_OVERLOAD(_VA_SWAP, __VA_ARGS__)
+#define SWAP(type, a, b) { \
+ type sw_ap; \
+ CHECK_TYPE(a, type); \
+ CHECK_TYPE(b, type); \
+ sw_ap = (a); \
+ (a) = (b); \
+ (b) = sw_ap; \
+} (void)0
/* swap with a temp value */
#define SWAP_TVAL(tval, a, b) { \