diff --git a/randr/rroutput.c b/randr/rroutput.c index 078d6798d..a800b8ba8 100644 --- a/randr/rroutput.c +++ b/randr/rroutput.c @@ -149,7 +149,6 @@ Bool RROutputSetModes(RROutputPtr output, RRModePtr * modes, int numModes, int numPreferred) { - RRModePtr *newModes; int i; if (numModes == output->numModes && numPreferred == output->numPreferred) { @@ -163,19 +162,19 @@ RROutputSetModes(RROutputPtr output, } } + RRModePtr *newModes = NULL; if (numModes) { newModes = xallocarray(numModes, sizeof(RRModePtr)); if (!newModes) return FALSE; + memcpy(newModes, modes, numModes * sizeof(RRModePtr)); } - else - newModes = NULL; + if (output->modes) { for (i = 0; i < output->numModes; i++) RRModeDestroy(output->modes[i]); free(output->modes); } - memcpy(newModes, modes, numModes * sizeof(RRModePtr)); output->modes = newModes; output->numModes = numModes; output->numPreferred = numPreferred;