Regarding: sunffb driver can fail because it tests the return value of a -void- procedure during ScreenInit Email: [EMAIL PROTECTED] ------------------------------------------------------------ XFree86 Version: XFree86 Version 4.2.1
OS: Linux 2.4.20-sparc-r0 #3 SMP Fri Jan 3 15:56:09 UTC 2003 sparc64 sun4u Area: xc/programs/Xserver/hw/xfree86/drivers/sunffb Server: XFree86 (The XFree86 4.x server) Video Card: Potentially any Sun Creator/Creator3D/Elite3D card driven by the sunffb driver specified in Q4, because there is a programming error which is device independent in the driver code. Description: sunffb_drv.c in referenced directory (item 4) in FFBScreenInit at lines 673--674 reads: if (!FFBDbePreInit(pScreen)) return FALSE; In turn, FFBDbePreInit at 900 in ffb_dbe.c reads: return DbeRegisterFunction(pScreen, FFBDbeInit); However, DbeRegisterFunction in xc/programs/Xserver/dbe/dbe.c @ 121--22 reads void DbeRegisterFunction(pScreen, funct) This can cause a ScreenInit failure at X startup because the driver can fail based on the value returned by a function that can return no value. Easiest fix is either: if (!FFBDbePreInit(pScreen)) return FALSE; becomes just FFBDbePreInit(pScreen); or, better, in ffb_dbe.c at 900 write DbeRegisterFunction(pScreen, FFBDbeInit); return TRUE; /* Failure here is meaningless. */ Repeat By: It seems that this failure occurs when the video card is a Creator3D, series 1 (FFB). It does not seem to occur with Creator3D, series 3 (FFB2+). In any case, the referenced lines in sunffb_drv.c can't be correct because there is no meaningful value to check at this point. So, repeate by putting a Creator#d,series 1 into a sparc ultra Linux system and starting X on it. _______________________________________________ XFree86 mailing list [EMAIL PROTECTED] http://XFree86.Org/mailman/listinfo/xfree86