Browse Source

LibLine: Quit event loop when an error occurs on update

Previously we were crashing, which was excessive, if we can't read
anymore, we should just return with an error.
Ali Mohammad Pur 2 năm trước cách đây
mục cha
commit
c045d09840
1 tập tin đã thay đổi với 11 bổ sung3 xóa
  1. 11 3
      Userland/Libraries/LibLine/Editor.cpp

+ 11 - 3
Userland/Libraries/LibLine/Editor.cpp

@@ -749,9 +749,17 @@ auto Editor::get_line(DeprecatedString const& prompt) -> Result<DeprecatedString
 
     m_notifier = Core::Notifier::construct(STDIN_FILENO, Core::Notifier::Read);
 
-    m_notifier->on_ready_to_read = [&] { try_update_once().release_value_but_fixme_should_propagate_errors(); };
-    if (!m_incomplete_data.is_empty())
-        deferred_invoke([&] { try_update_once().release_value_but_fixme_should_propagate_errors(); });
+    m_notifier->on_ready_to_read = [&] {
+        if (try_update_once().is_error())
+            loop.quit(Exit);
+    };
+
+    if (!m_incomplete_data.is_empty()) {
+        deferred_invoke([&] {
+            if (try_update_once().is_error())
+                loop.quit(Exit);
+        });
+    }
 
     if (loop.exec() == Retry)
         return get_line(prompt);