Zhiyi Zhang (@zhiyi) commented about dlls/winex11.drv/display.c:
for (display_idx = 0; !NtUserEnumDisplayDevices( NULL, display_idx, &display_device, 0 ); ++display_idx) ++display_count;
- displays = calloc(display_count, sizeof(*displays));
- if (!displays)
goto done;
- /* allocate an extra mode to make iteration easier */
- if (!(displays = calloc(display_count + 1, sizeof(struct display_setting)))) goto done;
- mode = displays;
- for (display_idx = 0; display_idx < display_count; ++display_idx)
- for (display_idx = 0; !NtUserEnumDisplayDevices( NULL, display_idx, &display_device, 0 ); ++display_idx)
Why do you need to change the loop? And even if you have to, NtUserEnumDisplayDevices is called twice for the same display_idx.