From 8bb361889c3c37dbaa0254bb9a76dcd94aeab115 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 6 Mar 2020 10:26:05 +0100 Subject: [PATCH] AK: Remove Optional::operator bool() This was causing some obvious-in-hindsight but hard to spot bugs where we'd implicitly convert the bool to an integer type and carry on with the number 1 instead of the actual value(). --- AK/Bitmap.h | 4 ++-- AK/Optional.h | 3 --- Kernel/FileSystem/Ext2FileSystem.cpp | 6 +++--- Kernel/FileSystem/ProcFS.cpp | 4 ++-- Libraries/LibHTML/DOM/Element.cpp | 2 +- Servers/LookupServer/LookupServer.cpp | 2 +- 6 files changed, 9 insertions(+), 12 deletions(-) diff --git a/AK/Bitmap.h b/AK/Bitmap.h index 2d3d32d2188..493abe7d5aa 100644 --- a/AK/Bitmap.h +++ b/AK/Bitmap.h @@ -165,14 +165,14 @@ public: if (!first_index.has_value()) return {}; - size_t free_region_start = first_index; + size_t free_region_start = first_index.value(); size_t free_region_size = 1; size_t max_region_start = free_region_start; size_t max_region_size = free_region_size; // Let's try and find the best fit possible - for (size_t j = first_index + 1; j < m_size && free_region_size < max_length; j++) { + for (size_t j = first_index.value() + 1; j < m_size && free_region_size < max_length; j++) { if (!get(j)) { if (free_region_size == 0) free_region_start = j; diff --git a/AK/Optional.h b/AK/Optional.h index 80986dca781..c135440013e 100644 --- a/AK/Optional.h +++ b/AK/Optional.h @@ -150,9 +150,6 @@ public: return fallback; } - SET_TYPESTATE(consumed) - operator bool() const { return m_has_value; } - private: // Call when we don't want to alter the consume state const T& value_without_consume_state() const diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp index fe6c282ff96..d2a45f36e1b 100644 --- a/Kernel/FileSystem/Ext2FileSystem.cpp +++ b/Kernel/FileSystem/Ext2FileSystem.cpp @@ -1076,9 +1076,9 @@ Ext2FS::BlockIndex Ext2FS::allocate_block(GroupIndex preferred_group_index) auto block_bitmap = Bitmap::wrap(cached_bitmap.buffer.data(), blocks_in_group); BlockIndex first_block_in_group = (group_index - 1) * blocks_per_group() + first_block_index(); - int first_unset_bit_index = block_bitmap.find_first_unset(); - ASSERT(first_unset_bit_index != -1); - BlockIndex block_index = (unsigned)first_unset_bit_index + first_block_in_group; + auto first_unset_bit_index = block_bitmap.find_first_unset(); + ASSERT(first_unset_bit_index.has_value()); + BlockIndex block_index = first_unset_bit_index.value() + first_block_in_group; set_block_allocation_state(block_index, true); return block_index; } diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp index 66b6721bc87..20349cfaed9 100644 --- a/Kernel/FileSystem/ProcFS.cpp +++ b/Kernel/FileSystem/ProcFS.cpp @@ -1228,7 +1228,7 @@ ssize_t ProcFSInode::read_bytes(off_t offset, ssize_t count, u8* buffer, FileDes if (!description) { generated_data = (*read_callback)(identifier()); } else { - if (!description->generator_cache()) + if (!description->generator_cache().has_value()) description->generator_cache() = (*read_callback)(identifier()); generated_data = description->generator_cache(); } @@ -1242,7 +1242,7 @@ ssize_t ProcFSInode::read_bytes(off_t offset, ssize_t count, u8* buffer, FileDes ssize_t nread = min(static_cast(data.value().size() - offset), static_cast(count)); memcpy(buffer, data.value().data() + offset, nread); - if (nread == 0 && description && description->generator_cache()) + if (nread == 0 && description && description->generator_cache().has_value()) description->generator_cache().clear(); return nread; diff --git a/Libraries/LibHTML/DOM/Element.cpp b/Libraries/LibHTML/DOM/Element.cpp index c377c55f4e9..5e192685935 100644 --- a/Libraries/LibHTML/DOM/Element.cpp +++ b/Libraries/LibHTML/DOM/Element.cpp @@ -209,7 +209,7 @@ NonnullRefPtr Element::computed_style() }; for (CSS::PropertyID id : box_model_metrics) { auto prop = layout_node()->style().property(id); - if (prop) + if (prop.has_value()) properties->set_property(id, prop.value()); } } diff --git a/Servers/LookupServer/LookupServer.cpp b/Servers/LookupServer/LookupServer.cpp index 42522ba49d3..3d466cb2316 100644 --- a/Servers/LookupServer/LookupServer.cpp +++ b/Servers/LookupServer/LookupServer.cpp @@ -117,7 +117,7 @@ void LookupServer::service_client(RefPtr socket) Vector responses; - if (auto known_host = m_etc_hosts.get(hostname)) { + if (auto known_host = m_etc_hosts.get(hostname); known_host.has_value()) { responses.append(known_host.value()); } else if (!hostname.is_empty()) { bool did_timeout;