diff options
author | Kristian Høgsberg <krh@redhat.com> | 2008-12-01 12:41:10 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@redhat.com> | 2008-12-01 12:41:10 -0500 |
commit | 09df7cc5ad7b72d8a23c3e22fc718aad8c16f4d3 (patch) | |
tree | b9fb294b59ac0ae30001a7eeadfa02ae1c5b475c | |
parent | b0d371ab0a6efd4956c3677faa20b2ac15c33765 (diff) |
Avoid dereferencing NULL pScreen in xf86CrtcSetModeTransform().
We can get there during PreInit as we set a mode for load detection.
At that time there's no pScreen anywhere, so just skip the optimization
then.
-rw-r--r-- | hw/xfree86/modes/xf86Crtc.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 6a3731c7c..0c069152c 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -294,10 +294,14 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati } else crtc->transformPresent = FALSE; - /* xf86CrtcFitsScreen() relies on these values being correct. */ - /* This should ensure the values are always set at modeset time. */ - pScreen->width = scrn->virtualX; - pScreen->height = scrn->virtualY; + /* We may hit this path during PreInit during load-detcect, at + * which point no pScreens exist yet, so avoid this step. */ + if (pScreen) { + /* xf86CrtcFitsScreen() relies on these values being correct. */ + /* This should ensure the values are always set at modeset time. */ + pScreen->width = scrn->virtualX; + pScreen->height = scrn->virtualY; + } /* Shift offsets that move us out of virtual size */ if (x + mode->HDisplay > xf86_config->maxWidth || |