From 51ae913bfe3ee42c7da949b32f313a79e9c9f143 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 1 Sep 2021 22:56:31 +0200 Subject: [PATCH] LibIMAP: Stop leaking a Core::Promise in IMAP::Client::connect() --- Userland/Applications/Mail/MailWidget.cpp | 4 ++-- Userland/Libraries/LibIMAP/Client.cpp | 4 ++-- Userland/Libraries/LibIMAP/Client.h | 2 +- Userland/Utilities/test-imap.cpp | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Userland/Applications/Mail/MailWidget.cpp b/Userland/Applications/Mail/MailWidget.cpp index d2804e5143..709f7406b5 100644 --- a/Userland/Applications/Mail/MailWidget.cpp +++ b/Userland/Applications/Mail/MailWidget.cpp @@ -125,11 +125,11 @@ bool MailWidget::connect_and_login() m_imap_client = make(server, port, tls); auto connection_promise = m_imap_client->connect(); - if (!connection_promise.has_value()) { + if (!connection_promise) { GUI::MessageBox::show_error(window(), String::formatted("Failed to connect to '{}:{}' over {}.", server, port, tls ? "TLS" : "Plaintext")); return false; } - connection_promise.value()->await(); + connection_promise->await(); auto response = m_imap_client->login(username, password)->await().release_value(); diff --git a/Userland/Libraries/LibIMAP/Client.cpp b/Userland/Libraries/LibIMAP/Client.cpp index 4a5b3c244a..9b63733e14 100644 --- a/Userland/Libraries/LibIMAP/Client.cpp +++ b/Userland/Libraries/LibIMAP/Client.cpp @@ -21,7 +21,7 @@ Client::Client(StringView host, unsigned int port, bool start_with_tls) } } -Optional>> Client::connect() +RefPtr> Client::connect() { bool success; if (m_tls) { @@ -31,7 +31,7 @@ Optional>> Client::connect() } if (!success) return {}; - m_connect_pending = new Promise {}; + m_connect_pending = Promise::construct(); return m_connect_pending; } diff --git a/Userland/Libraries/LibIMAP/Client.h b/Userland/Libraries/LibIMAP/Client.h index e39f88d158..3fb9095dbd 100644 --- a/Userland/Libraries/LibIMAP/Client.h +++ b/Userland/Libraries/LibIMAP/Client.h @@ -21,7 +21,7 @@ class Client { public: Client(StringView host, unsigned port, bool start_with_tls); - Optional>> connect(); + RefPtr> connect(); RefPtr>> send_command(Command&&); RefPtr>> send_simple_command(CommandType); void send_raw(StringView data); diff --git a/Userland/Utilities/test-imap.cpp b/Userland/Utilities/test-imap.cpp index 4619ee7230..bcafc04532 100644 --- a/Userland/Utilities/test-imap.cpp +++ b/Userland/Utilities/test-imap.cpp @@ -48,7 +48,7 @@ int main(int argc, char** argv) Core::EventLoop loop; auto client = IMAP::Client(host, port, tls); - client.connect().value()->await(); + client.connect()->await(); auto response = client.login(username, password)->await().release_value(); outln("[LOGIN] Login response: {}", response.response_text());