https://git.reactos.org/?p=reactos.git;a=commitdiff;h=340d9360c3a3035e4854c…
commit 340d9360c3a3035e4854cc4640374fe3294e20e0
Author: Hervé Poussineau <hpoussin(a)reactos.org>
AuthorDate: Sun Mar 1 10:06:18 2020 +0100
Commit: Hervé Poussineau <hpoussin(a)reactos.org>
CommitDate: Sun Mar 1 10:12:13 2020 +0100
[VIDEOPRT] Workaround bug CORE-16695 (infinite loop when reading EDID on LiveCD in
QEMU)
For some reason, we don't get valid EDIDs when using LiveCD on QEMU.
We ignore them, and try to read the one of the next child.
This leads to a infinite loop and then, an out of memory error.
As it can also happen in other circonstances, stop enumeration as soon
as an invalid EDID is detected.
This breaks configurations with graphic cards with 2+ outputs, where
the first one is not plugged to a monitor, and the second one is plugged
to a monitor.
CORE-16695
---
win32ss/drivers/videoprt/videoprt.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/win32ss/drivers/videoprt/videoprt.c b/win32ss/drivers/videoprt/videoprt.c
index 0c80c7fbfb4..d040652b4ec 100644
--- a/win32ss/drivers/videoprt/videoprt.c
+++ b/win32ss/drivers/videoprt/videoprt.c
@@ -1225,6 +1225,10 @@ VideoPortEnumerateChildren(
{
/* Mark it invalid */
ChildExtension->EdidValid = FALSE;
+ // FIXME: the following break workarounds CORE-16695
+ // but prevents graphic cards to return an invalid
+ // EDID as first child, and a valid one as second child.
+ break;
}
}
}