Commit 112d0d7d01b9 lost the initialization of the variable i in the loop to add
secondary driver matches to the list of configs:
@@ -398,8 +412,8 @@ autoConfigDevice(GDevPtr preconf_device)
/* for each other driver found, copy the first screen, insert it
* into the list of screens and set the driver */
- for (i = 1; i < num_matches; i++) {
- if (!copyScreen(slp[0].screen, ptr, i, matches[i]))
+ while (i++ < md.nmatches) {
+ if (!copyScreen(slp[0].screen, ptr, i, md.matches[i]))
return NULL;
}
This caused only the first match to be added, because an earlier loop sets i =
md.nmatches.
Fix this by reverting the while loop back to a for loop.
Reported-by: Michel Dänzer <[email protected]>
Reported-by: Peter Hutterer <[email protected]>
Reported-by: Eric Anholt <[email protected]>
Cc: Adam Jackson <[email protected]>
Fixes: 112d0d7d01b9 ("xfree86: Improved autoconfig drivers matching")
Signed-off-by: Aaron Plattner <[email protected]>
---
Resend: forgot to Cc the list.
hw/xfree86/common/xf86AutoConfig.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/xfree86/common/xf86AutoConfig.c
b/hw/xfree86/common/xf86AutoConfig.c
index a32c108ff2de..0f4f05de99e0 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -412,7 +412,7 @@ autoConfigDevice(GDevPtr preconf_device)
/* for each other driver found, copy the first screen, insert it
* into the list of screens and set the driver */
- while (i++ < md.nmatches) {
+ for (i = 1; i < md.nmatches; i++) {
if (!copyScreen(slp[0].screen, ptr, i, md.matches[i]))
return NULL;
}
--
2.12.2
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel