Revert "[Tizen] Fix undefined behaviour due to strict-aliasing." 79/113779/1
authorminho.sun <minho.sun@samsung.com>
Thu, 9 Feb 2017 01:25:47 +0000 (10:25 +0900)
committerminho.sun <minho.sun@samsung.com>
Thu, 9 Feb 2017 01:42:01 +0000 (10:42 +0900)
This reverts commit abfc79dfe46291b4a66333135634d202bd6c7711.

Change-Id: I714cd8c2288886962b84a2891fa314e34a805ef3

dali/internal/update/manager/geometry-batcher.cpp

index 2ec048e..2409c95 100644 (file)
@@ -63,18 +63,18 @@ struct TransformVertexBufferData
 template <typename PositionType >
 void TransformVertexBuffer( TransformVertexBufferData& data )
 {
-  const char* source = reinterpret_cast<const char*>( data.sourcePtr );
-  char* destination = reinterpret_cast<char*>( data.destinationPtr );
+  const PositionType* source = reinterpret_cast<const PositionType*>( data.sourcePtr );
+  PositionType* destination = reinterpret_cast<PositionType*>( data.destinationPtr );
 
   size_t componentSize = data.componentSize ? data.componentSize : sizeof( PositionType );
-  const char* sourceEnd = source + data.vertexCount*componentSize;
+  const void* sourceEnd = (reinterpret_cast<const char*>( source ) + ( data.vertexCount*componentSize ));
   for( ; source < sourceEnd;
-       destination += componentSize,
-       source += componentSize
+       *(reinterpret_cast<char**>( &destination )) += componentSize,
+       *(reinterpret_cast<const char**>( &source )) += componentSize
        )
   {
-    Dali::Internal::MultiplyVectorBySize( *reinterpret_cast<PositionType*>(destination), *reinterpret_cast<const PositionType*>(source), data.size );
-    Dali::Internal::MultiplyVectorByMatrix4( *reinterpret_cast<PositionType*>(destination), data.transform, *reinterpret_cast<PositionType*>(destination) );
+    Dali::Internal::MultiplyVectorBySize( *destination, *source, data.size );
+    Dali::Internal::MultiplyVectorByMatrix4( *destination, data.transform, *destination );
   }
 }