From fddcde777f50611099d8888456d93be7e566c84e Mon Sep 17 00:00:00 2001 From: Egbert Eich Date: Wed, 18 May 2005 15:38:50 +0000 Subject: [PATCH] VBESetVBEMode() calls int10 0x4f02 to set a VBE video mode. This can be a standard mode solely determined by the mode ID or it may be a detailed mode with almost arbitrary mode parameters. The mode parameters are passed to the BIOS in a memory area pointed to by es:di. If bit 11 in the video mode is set this memory area is evaluated. When we don't have such an area (passed to VBESetVBEMode() this function should unset this bit for sanity reasons. (Bugzilla #3329) --- hw/xfree86/vbe/vbe.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/xfree86/vbe/vbe.c b/hw/xfree86/vbe/vbe.c index 33df80a92..7b55c1398 100644 --- a/hw/xfree86/vbe/vbe.c +++ b/hw/xfree86/vbe/vbe.c @@ -469,7 +469,8 @@ VBESetVBEMode(vbeInfoPtr pVbe, int mode, VbeCRTCInfoBlock *block) memcpy(pVbe->memory, block, sizeof(VbeCRTCInfoBlock)); pVbe->pInt10->es = SEG_ADDR(pVbe->real_mode_base); pVbe->pInt10->di = SEG_OFF(pVbe->real_mode_base); - } + } else + pVbe->pInt10->bx &= ~(1 << 11); xf86ExecX86int10(pVbe->pInt10);