浏览代码

Fix bad pointer arithmetic in aiVector2

Trying to reference 'y' via pointer arithmetic on 'x' is UB
Turo Lamminen 7 年之前
父节点
当前提交
87462165b5
共有 1 个文件被更改,包括 18 次插入2 次删除
  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;
 }
 
 // ------------------------------------------------------------------------------------------------