diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
index 4265c32..b49a7df 100755
--- a/libdrm/xf86drm.c
+++ b/libdrm/xf86drm.c
@@ -1008,16 +1008,19 @@ int drmFreeBufs(int fd, int count, int *list)
  */
 int drmClose(int fd)
 {
-    unsigned long key    = drmGetKeyFromFd(fd);
-    drmHashEntry  *entry = drmGetEntry(fd);
+    if (drmHashTable)
+    {
+        unsigned long key    = drmGetKeyFromFd(fd);
+        drmHashEntry  *entry = drmGetEntry(fd);
 
-    drmHashDestroy(entry->tagTable);
-    entry->fd       = 0;
-    entry->f        = NULL;
-    entry->tagTable = NULL;
+        drmHashDestroy(entry->tagTable);
+        entry->fd       = 0;
+        entry->f        = NULL;
+        entry->tagTable = NULL;
 
-    drmHashDelete(drmHashTable, key);
-    drmFree(entry);
+        drmHashDelete(drmHashTable, key);
+        drmFree(entry);
+    }
 
     return close(fd);
 }
