diff --git a/client/X11/xf_monitor.c b/client/X11/xf_monitor.c index d13cf0dbd..fb7749421 100644 --- a/client/X11/xf_monitor.c +++ b/client/X11/xf_monitor.c @@ -372,6 +372,9 @@ BOOL xf_detect_monitors(xfContext* xfc, UINT32* pMaxWidth, UINT32* pMaxHeight) * command-line */ { int i; + UINT32 nr = 0; + if (settings->MonitorIds) + nr = settings->MonitorIds[0]; for (i = 0; i < vscreen->nmonitors; i++) { @@ -414,7 +417,7 @@ BOOL xf_detect_monitors(xfContext* xfc, UINT32* pMaxWidth, UINT32* pMaxHeight) #endif - if ((UINT32)i == settings->MonitorIds[0]) + if ((UINT32)i == nr) { settings->MonitorDefArray[nmonitors].is_primary = TRUE; settings->MonitorLocalShiftX = settings->MonitorDefArray[nmonitors].x; @@ -512,7 +515,8 @@ BOOL xf_detect_monitors(xfContext* xfc, UINT32* pMaxWidth, UINT32* pMaxHeight) if (settings->NumMonitorIds) { /* The first monitor is the first in the setting which should be used */ - monitor_index = settings->MonitorIds[0]; + if (settings->MonitorIds) + monitor_index = settings->MonitorIds[0]; } else { diff --git a/libfreerdp/core/settings.c b/libfreerdp/core/settings.c index 7b28b3308..73e6355b9 100644 --- a/libfreerdp/core/settings.c +++ b/libfreerdp/core/settings.c @@ -430,7 +430,7 @@ rdpSettings* freerdp_settings_new(DWORD flags) if (!freerdp_settings_set_uint32(settings, FreeRDP_MonitorLocalShiftY, 0)) goto out_fail; - if (!freerdp_settings_set_pointer_len(settings, FreeRDP_MonitorIds, NULL, 16)) + if (!freerdp_settings_set_pointer_len(settings, FreeRDP_MonitorIds, NULL, 0)) goto out_fail; if (!settings_get_computer_name(settings))