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

Reply via email to