================
@@ -993,6 +996,20 @@ class IOHandlerProcessSTDIOWindows : public IOHandler {
       case WAIT_FAILED:
         goto exit_loop;
       case WAIT_OBJECT_0: {
+        if (isConsole) {
+          INPUT_RECORD inputRecord;
+          DWORD numRead = 0;
+          if (!PeekConsoleInput(hStdin, &inputRecord, 1, &numRead) ||
+              numRead == 0)
+            goto exit_loop;
+          // We only care about text input. Ignore all non text input events 
and
+          // let other IOHandlers handle them.
+          if (inputRecord.EventType != KEY_EVENT ||
+              !inputRecord.Event.KeyEvent.bKeyDown ||
+              inputRecord.Event.KeyEvent.uChar.AsciiChar == 0)
+            break;
----------------
charles-zablit wrote:

I had wrong assumptions: I thought the pipe would be cleared by another 
handler, that's clearly not the case.

I rewrote the logic to filter out non text inputs by consuming them, and then 
consume those inputs with `ReadFile`.

In https://github.com/llvm/llvm-project/pull/175812#discussion_r2690205275 I 
did not filter out the 2 properly.

This fixes the issue and does not put lldb in a busy loop anymore.


https://github.com/llvm/llvm-project/pull/175812
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to