diff -ur poppler-0.6.1/poppler/GlobalParams.cc poppler-0.6.1-patched/poppler/GlobalParams.cc
--- poppler-0.6.1/poppler/GlobalParams.cc	2007-09-17 20:37:58.000000000 +0200
+++ poppler-0.6.1-patched/poppler/GlobalParams.cc	2007-11-06 16:11:55.995595933 +0100
@@ -654,27 +654,39 @@
   GDir *dir;
   GDirEntry *entry;
 
-  dir = new GDir(POPPLER_DATADIR "/nameToUnicode", gFalse);
+  GooString *real_datadir = new GooString (getenv("POPPLER_DATADIR"));
+  if (!real_datadir->getCString())
+	  real_datadir->Set(POPPLER_DATADIR);
+  GooString *dirname;
+
+  dirname = real_datadir->copy();
+  dir = new GDir(dirname->append("/nameToUnicode")->getCString(), gFalse);
   while (entry = dir->getNextEntry(), entry != NULL) {
     parseNameToUnicode(entry->getFullPath());
     delete entry;
   }
   delete dir;
+  delete dirname;
 
-  dir = new GDir(POPPLER_DATADIR "/cidToUnicode", gFalse);
+  dirname = real_datadir->copy();
+  dir = new GDir(dirname->append("/cidToUnicode")->getCString(), gFalse);
   while (entry = dir->getNextEntry(), entry != NULL) {
     addCIDToUnicode(entry->getName(), entry->getFullPath());
     delete entry;
   }
   delete dir;
+  delete dirname;
 
-  dir = new GDir(POPPLER_DATADIR "/unicodeMap", gFalse);
+  dirname = real_datadir->copy();
+  dir = new GDir(dirname->append("/unicodeMap")->getCString(), gFalse);
   while (entry = dir->getNextEntry(), entry != NULL) {
     addUnicodeMap(entry->getName(), entry->getFullPath());
     delete entry;
   }
   delete dir;
+  delete dirname;
 
+  dirname = real_datadir->copy();
   dir = new GDir(POPPLER_DATADIR "/cMap", gFalse);
   while (entry = dir->getNextEntry(), entry != NULL) {
     addCMapDir(entry->getName(), entry->getFullPath());
@@ -682,6 +694,9 @@
     delete entry;
   }
   delete dir;
+  delete dirname;
+
+  delete real_datadir;
 }
 
 void GlobalParams::parseNameToUnicode(GooString *name) {
