Browse Source

Fixed unsafe casts

Rainer Deyke 3 years ago
parent
commit
56ae5bbafb
1 changed files with 8 additions and 4 deletions
  1. 8 4
      core/os/keyboard.h

+ 8 - 4
core/os/keyboard.h

@@ -315,7 +315,8 @@ constexpr Key operator-(uint32_t a, Key b) {
 }
 }
 
 
 constexpr Key &operator-=(Key &a, int b) {
 constexpr Key &operator-=(Key &a, int b) {
-	return (Key &)((int &)a -= b);
+  a = static_cast<Key>(static_cast<int>(a) - static_cast<int>(b));
+	return a;
 }
 }
 
 
 constexpr Key operator+(Key a, int b) {
 constexpr Key operator+(Key a, int b) {
@@ -339,15 +340,18 @@ constexpr Key operator|(Key a, Key b) {
 }
 }
 
 
 constexpr Key &operator|=(Key &a, Key b) {
 constexpr Key &operator|=(Key &a, Key b) {
-	return (Key &)((int &)a |= (int)b);
+  a = static_cast<Key>(static_cast<int>(a) | static_cast<int>(b));
+	return a;
 }
 }
 
 
 constexpr Key &operator|=(Key &a, KeyModifierMask b) {
 constexpr Key &operator|=(Key &a, KeyModifierMask b) {
-	return (Key &)((int &)a |= (int)b);
+  a = static_cast<Key>(static_cast<int>(a) | static_cast<int>(b));
+	return a;
 }
 }
 
 
 constexpr Key &operator&=(Key &a, KeyModifierMask b) {
 constexpr Key &operator&=(Key &a, KeyModifierMask b) {
-	return (Key &)((int &)a &= (int)b);
+  a = static_cast<Key>(static_cast<int>(a) & static_cast<int>(b));
+	return a;
 }
 }
 
 
 constexpr Key operator|(Key a, KeyModifierMask b) {
 constexpr Key operator|(Key a, KeyModifierMask b) {