summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de>2004-09-19 12:59:52 +0000
committerAlexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de>2004-09-19 12:59:52 +0000
commit908287addaff10a0f5f6f14bf06a9b85870737ec (patch)
tree6a12dc90e6e694b9bb017a7478c2e991059d241d
parent90ff3688cdc0c2c1b5ccdbd9cc0659b9a355e85f (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.
-rw-r--r--Xext/xf86bigfont.c9
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);