diff --git a/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp b/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp
index 04d5f1f539c5e44e1bb1c382fd49eece2b2acb6c..f08eeed609120ed0a2735324b94049e277fcdb4a 100644
--- a/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp
+++ b/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp
@@ -56,6 +56,10 @@
 
 /*
  * $Log$
+ * Revision 1.9  2002/12/04 18:11:23  peiyongz
+ * use $XERCESCROOT to search for icu resource bundle if XERCESC_NLS_HOME
+ * undefined
+ *
  * Revision 1.8  2002/11/20 20:28:17  peiyongz
  * fix to warning C4018: '>' : signed/unsigned mismatch
  *
@@ -169,13 +173,24 @@ ICUMsgLoader::ICUMsgLoader(const XMLCh* const  msgDomain)
     ***/
     char locationBuf[1024];
     memset(locationBuf, 0, sizeof locationBuf);
-	char *nlsHome = getenv("XERCESC_NLS_HOME");
+    char *nlsHome = getenv("XERCESC_NLS_HOME");
 
     if (nlsHome)
-	{
-		strcpy(locationBuf, nlsHome);
+    {
+    	strcpy(locationBuf, nlsHome);
         strcat(locationBuf, U_FILE_SEP_STRING);
-	}
+    }
+    else
+    {
+        char *altHome = getenv("XERCESCROOT");
+        if (altHome)
+        {
+            strcpy(locationBuf, altHome);
+            strcat(locationBuf, U_FILE_SEP_STRING);
+            strcat(locationBuf, "lib");
+            strcat(locationBuf, U_FILE_SEP_STRING);                    
+        }
+    }    
 
     strcat(locationBuf, "XercescErrMsg");