Fix bad pointer arithmetic in aiVector2
Trying to reference 'y' via pointer arithmetic on 'x' is UBpull/1637/head
parent
45ad63f373
commit
87462165b5
|
@ -114,13 +114,29 @@ const aiVector2t<TReal>& aiVector2t<TReal>::operator /= (TReal f) {
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
template <typename TReal>
|
template <typename TReal>
|
||||||
TReal aiVector2t<TReal>::operator[](unsigned int i) const {
|
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>
|
template <typename TReal>
|
||||||
TReal& aiVector2t<TReal>::operator[](unsigned int i) {
|
TReal& aiVector2t<TReal>::operator[](unsigned int i) {
|
||||||
return *(&x + i);
|
switch (i) {
|
||||||
|
case 0:
|
||||||
|
return x;
|
||||||
|
case 1:
|
||||||
|
return y;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue