mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-27 07:00:07 +01:00
//bugs.freedesktop.org/show_bug.cgi?id=1402) attachment #948
(https://bugs.freedesktop.org/attachment.cgi?id=948): Fix BigFont extension if SHM is compiled in but not working. Does not access SHM and privates if the SHM syscall failed during extension initialization. Patch by Alexander Gottwald <ago@freedesktop.org>.
This commit is contained in:
parent
8982b3c084
commit
eb73d7f749
1 changed files with 8 additions and 5 deletions
|
|
@ -99,12 +99,12 @@ static int FontShmdescIndex;
|
|||
|
||||
static unsigned int pagesize;
|
||||
|
||||
static Bool badSysCall = FALSE;
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__CYGWIN__)
|
||||
|
||||
#include <sys/signal.h>
|
||||
|
||||
static Bool badSysCall = FALSE;
|
||||
|
||||
static void
|
||||
SigSysHandler(
|
||||
int signo)
|
||||
|
|
@ -471,13 +471,16 @@ ProcXF86BigfontQueryFont(
|
|||
|
||||
if (nCharInfos > 0) {
|
||||
#ifdef HAS_SHM
|
||||
pDesc = (ShmDescPtr) FontGetPrivate(pFont, FontShmdescIndex);
|
||||
if (!badSysCall)
|
||||
pDesc = (ShmDescPtr) FontGetPrivate(pFont, FontShmdescIndex);
|
||||
else
|
||||
pDesc = NULL;
|
||||
if (pDesc) {
|
||||
pCI = (xCharInfo *) pDesc->attach_addr;
|
||||
if (stuff_flags & XF86Bigfont_FLAGS_Shm)
|
||||
shmid = pDesc->shmid;
|
||||
} else {
|
||||
if (stuff_flags & XF86Bigfont_FLAGS_Shm)
|
||||
if (stuff_flags & XF86Bigfont_FLAGS_Shm && !badSysCall)
|
||||
pDesc = shmalloc(nCharInfos * sizeof(xCharInfo)
|
||||
+ sizeof(CARD32));
|
||||
if (pDesc) {
|
||||
|
|
@ -522,7 +525,7 @@ ProcXF86BigfontQueryFont(
|
|||
}
|
||||
}
|
||||
#ifdef HAS_SHM
|
||||
if (pDesc) {
|
||||
if (pDesc && !badSysCall) {
|
||||
*(CARD32 *)(pCI + nCharInfos) = signature;
|
||||
if (!FontSetPrivate(pFont, FontShmdescIndex, pDesc)) {
|
||||
shmdealloc(pDesc);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue