diff options
author | Alexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de> | 2004-09-19 12:59:52 +0000 |
---|---|---|
committer | Alexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de> | 2004-09-19 12:59:52 +0000 |
commit | 908287addaff10a0f5f6f14bf06a9b85870737ec (patch) | |
tree | 6a12dc90e6e694b9bb017a7478c2e991059d241d /Xext/xf86bigfont.c | |
parent | 90ff3688cdc0c2c1b5ccdbd9cc0659b9a355e85f (diff) |
Bugzilla #1402: 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.
Diffstat (limited to 'Xext/xf86bigfont.c')
-rw-r--r-- | Xext/xf86bigfont.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/Xext/xf86bigfont.c b/Xext/xf86bigfont.c index dec2c181e..ac77dda03 100644 --- a/Xext/xf86bigfont.c +++ b/Xext/xf86bigfont.c @@ -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); |