Explorar o código

Fix bad pointer arithmetic in aiVector2

Trying to reference 'y' via pointer arithmetic on 'x' is UB
Turo Lamminen %!s(int64=7) %!d(string=hai) anos
pai
achega
87462165b5
Modificáronse 1 ficheiros con 18 adicións e 2 borrados
  1. 18 2
      include/assimp/vector2.inl

+ 18 - 2
include/assimp/vector2.inl

@@ -114,13 +114,29 @@ const aiVector2t<TReal>& aiVector2t<TReal>::operator /= (TReal f) {
 // ------------------------------------------------------------------------------------------------
 template <typename TReal>
 TReal aiVector2t<TReal>::operator[](unsigned int i) const {
-    return *(&x + i);
+    switch (i) {
+        case 0:
+            return x;
+        case 1:
+            return y;
+        default:
+            break;
+    }
+    return x;
 }
 
 // ------------------------------------------------------------------------------------------------
 template <typename TReal>
 TReal& aiVector2t<TReal>::operator[](unsigned int i) {
-    return *(&x + i);
+    switch (i) {
+        case 0:
+            return x;
+        case 1:
+            return y;
+        default:
+            break;
+    }
+    return x;
 }
 
 // ------------------------------------------------------------------------------------------------