[Bf-blender-cvs] [1ae0a8d760c] functions: Fix ListCPPTypeInfo

Jacques Lucke noreply at git.blender.org
Wed Mar 20 20:04:40 CET 2019


Commit: 1ae0a8d760cb77e7abbb53861d7ad5edb51bb819
Author: Jacques Lucke
Date:   Wed Mar 20 20:03:45 2019 +0100
Branches: functions
https://developer.blender.org/rB1ae0a8d760cb77e7abbb53861d7ad5edb51bb819

Fix ListCPPTypeInfo

===================================================================

M	source/blender/functions/types/numeric_lists.cpp

===================================================================

diff --git a/source/blender/functions/types/numeric_lists.cpp b/source/blender/functions/types/numeric_lists.cpp
index 65801a8886d..2f5705d2012 100644
--- a/source/blender/functions/types/numeric_lists.cpp
+++ b/source/blender/functions/types/numeric_lists.cpp
@@ -9,27 +9,22 @@ namespace FN { namespace Types {
 
 	template<typename T>
 	class ListCPPTypeInfo : public CPPTypeInfo {
-	private:
-		static List<T> *list_from_ptr(void *ptr)
-		{
-			return ((SharedList<T> *)ptr)->ptr();
-		}
 
 	public:
 		uint size_of_type() const override
 		{
+			static_assert(sizeof(SharedList<T>) == sizeof(void *), "");
 			return sizeof(SharedList<T>);
 		}
 
 		void construct_default(void *ptr) const override
 		{
-			List<T> *list = new List<T>();
-			*(SharedList<T> *)ptr = SharedList<T>::FromPointer(list);
+			*(List<T> **)ptr = new List<T>();
 		}
 
 		void destruct_type(void *ptr) const override
 		{
-			List<T> *list = this->list_from_ptr(ptr);
+			List<T> *list = *(List<T> **)ptr;
 			list->remove_user();
 		}
 
@@ -41,9 +36,9 @@ namespace FN { namespace Types {
 
 		void copy_to_uninitialized(void *src, void *dst) const override
 		{
-			List<T> *list = this->list_from_ptr(src);
+			List<T> *list = *(List<T> **)src;
 			list->new_user();
-			*(SharedList<T> *)dst = SharedList<T>::FromPointer(list);
+			*(List<T> **)dst = list;
 		}
 	};



More information about the Bf-blender-cvs mailing list