https://git.reactos.org/?p=reactos.git;a=commitdiff;h=340d9360c3a3035e4854cc...
commit 340d9360c3a3035e4854cc4640374fe3294e20e0 Author: Hervé Poussineau hpoussin@reactos.org AuthorDate: Sun Mar 1 10:06:18 2020 +0100 Commit: Hervé Poussineau hpoussin@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; } } }