Bläddra i källkod

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 år sedan
förälder
incheckning
c045d09840
1 ändrade filer med 11 tillägg och 3 borttagningar
  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 = 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)
     if (loop.exec() == Retry)
         return get_line(prompt);
         return get_line(prompt);