]> git.pld-linux.org Git - packages/XFree86.git/commitdiff
- should avoid crash after XF86VidModeSwitchToMode() failure - for testing
authorJakub Bogusz <qboosh@pld-linux.org>
Sat, 8 Mar 2003 01:03:50 +0000 (01:03 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    XFree86-VidMode-nocrashafterfailure.patch -> 1.1

XFree86-VidMode-nocrashafterfailure.patch [new file with mode: 0644]

diff --git a/XFree86-VidMode-nocrashafterfailure.patch b/XFree86-VidMode-nocrashafterfailure.patch
new file mode 100644 (file)
index 0000000..89c64cf
--- /dev/null
@@ -0,0 +1,35 @@
+X server used to crash after XF86VidModeSwitchToMode() failure,
+because of unconditional currentMode info destruction.
+
+E.g. (the case I investigated) when screen resolution set by RandR was
+lower than requested by XF86VidModeSwitchToMode(), xf86SwitchMode is
+unsuccessful; due to currentMode == NULL (in some way) DRIAdjustFrame()
+called itself recursively again and again, leading to stack overflow.
+
+This patch seems to avoid the crash.
+
+--- XFree86-4.3.0/xc/programs/Xserver/hw/xfree86/common/xf86VidMode.c.orig     Tue Jan 28 21:52:28 2003
++++ XFree86-4.3.0/xc/programs/Xserver/hw/xfree86/common/xf86VidMode.c  Sat Mar  8 01:05:00 2003
+@@ -330,6 +330,8 @@
+ VidModeSwitchMode(int scrnIndex, pointer mode)
+ {
+     ScrnInfoPtr pScrn;
++    DisplayModePtr pTmpMode;
++    Bool retval;
+     DEBUG_P("VidModeSwitchMode");
+@@ -338,8 +340,12 @@
+     pScrn = xf86Screens[scrnIndex];
+     /* Force a mode switch */
++    pTmpMode = pScrn->currentMode;
+     pScrn->currentMode = NULL;
+-    return xf86SwitchMode(pScrn->pScreen, mode);
++    retval = xf86SwitchMode(pScrn->pScreen, mode);
++    if (retval == FALSE)
++      pScrn->currentMode = pTmpMode;
++    return retval;
+ }
+ Bool
This page took 0.041208 seconds and 4 git commands to generate.