summaryrefslogtreecommitdiff
path: root/xfixes
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@redhat.com>2009-04-14 14:24:31 -0400
committerKristian Høgsberg <krh@redhat.com>2009-04-14 14:24:40 -0400
commite7785e8af3e34f9d1089d8499d16802984ab9823 (patch)
tree9d159db4cc2f1c27d5ef38b1fcdd2ef05239b227 /xfixes
parent0eb19f9437b7d8c19592e49eedb028771d300d80 (diff)
xfixes: Fix a couple of resource lookups
Diffstat (limited to 'xfixes')
-rw-r--r--xfixes/cursor.c21
-rw-r--r--xfixes/xfixes.h20
2 files changed, 26 insertions, 15 deletions
diff --git a/xfixes/cursor.c b/xfixes/cursor.c
index 99403e5ce..33ab4265c 100644
--- a/xfixes/cursor.c
+++ b/xfixes/cursor.c
@@ -64,14 +64,19 @@ static DevPrivateKey CursorScreenPrivateKey = &CursorScreenPrivateKeyIndex;
static void deleteCursorHideCountsForScreen (ScreenPtr pScreen);
-#define VERIFY_CURSOR(pCursor, cursor, client, access) { \
- pCursor = (CursorPtr)SecurityLookupIDByType((client), (cursor), \
- RT_CURSOR, (access)); \
- if (!pCursor) { \
- (client)->errorValue = (cursor); \
- return BadCursor; \
- } \
-}
+#define VERIFY_CURSOR(pCursor, cursor, client, access) \
+ do { \
+ int err; \
+ err = dixLookupResourceByType((pointer *) &pCursor, cursor, \
+ RT_CURSOR, client, access); \
+ if (err == BadValue) { \
+ client->errorValue = cursor; \
+ return BadCursor; \
+ } else if (err != Success) { \
+ client->errorValue = cursor; \
+ return err; \
+ } \
+ } while (0)
/*
* There is a global list of windows selecting for cursor events
diff --git a/xfixes/xfixes.h b/xfixes/xfixes.h
index ade2f8236..69d162ffe 100644
--- a/xfixes/xfixes.h
+++ b/xfixes/xfixes.h
@@ -32,13 +32,19 @@
extern _X_EXPORT RESTYPE RegionResType;
extern _X_EXPORT int XFixesErrorBase;
-#define VERIFY_REGION(pRegion, rid, client, mode) { \
- pRegion = SecurityLookupIDByType (client, rid, RegionResType, mode); \
- if (!pRegion) { \
- client->errorValue = rid; \
- return XFixesErrorBase + BadRegion; \
- } \
-}
+#define VERIFY_REGION(pRegion, rid, client, mode) \
+ do { \
+ int err; \
+ err = dixLookupResourceByType((pointer *) &pRegion, rid, \
+ RegionResType, client, mode); \
+ if (err == BadValue) { \
+ client->errorValue = rid; \
+ return XFixesErrorBase + BadRegion; \
+ } else if (err != Success) { \
+ client->errorValue = rid; \
+ return err; \
+ } \
+ } while (0)
#define VERIFY_REGION_OR_NONE(pRegion, rid, client, mode) { \
pRegion = 0; \