summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@redhat.com>2008-12-01 12:41:10 -0500
committerKristian Høgsberg <krh@redhat.com>2008-12-01 12:41:10 -0500
commit09df7cc5ad7b72d8a23c3e22fc718aad8c16f4d3 (patch)
treeb9fb294b59ac0ae30001a7eeadfa02ae1c5b475c
parentb0d371ab0a6efd4956c3677faa20b2ac15c33765 (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.c12
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 ||