Ver código fonte

Kernel: Prevent confusing silent misuse of PCI::Address

Ben Wiederhake 4 anos atrás
pai
commit
9a0cd9a50d
1 arquivos alterados com 8 adições e 1 exclusões
  1. 8 1
      Kernel/PCI/Definitions.h

+ 8 - 1
Kernel/PCI/Definitions.h

@@ -89,7 +89,7 @@ inline const LogStream& operator<<(const LogStream& stream, const ID value)
 }
 }
 struct Address {
 struct Address {
 public:
 public:
-    Address() {}
+    Address() { }
     Address(u16 seg)
     Address(u16 seg)
         : m_seg(seg)
         : m_seg(seg)
         , m_bus(0)
         , m_bus(0)
@@ -116,6 +116,13 @@ public:
     bool is_null() const { return !m_bus && !m_slot && !m_function; }
     bool is_null() const { return !m_bus && !m_slot && !m_function; }
     operator bool() const { return !is_null(); }
     operator bool() const { return !is_null(); }
 
 
+    // Disable default implementations that would use surprising integer promotion.
+    bool operator==(const Address&) const = delete;
+    bool operator<=(const Address&) const = delete;
+    bool operator>=(const Address&) const = delete;
+    bool operator<(const Address&) const = delete;
+    bool operator>(const Address&) const = delete;
+
     u16 seg() const { return m_seg; }
     u16 seg() const { return m_seg; }
     u8 bus() const { return m_bus; }
     u8 bus() const { return m_bus; }
     u8 slot() const { return m_slot; }
     u8 slot() const { return m_slot; }