diff --git a/src/xercesc/NLS/EN_US/XMLErrList_EN_US.Xml b/src/xercesc/NLS/EN_US/XMLErrList_EN_US.Xml
index bca596782b3f436a8f8e34c2b19d4b90a7f38724..c963f4a74e6cf80bef80166043ef5f88e120dc97 100644
--- a/src/xercesc/NLS/EN_US/XMLErrList_EN_US.Xml
+++ b/src/xercesc/NLS/EN_US/XMLErrList_EN_US.Xml
@@ -758,6 +758,7 @@
             <Message Id="PD_RecurseUnordered" Text="RecurseUnordered: There is not a complete functional mapping between the particles"/>
             <Message Id="PD_MapAndSum" Text="MapAndSum: There is not a complete functional mapping between the particles"/>
             <Message Id="PD_InvalidContentType" Text="Particle derivation: Invalid content spec node type"/>
+            <Message Id="NodeIDMap_GrowErr" Text="NodeIDMap overflows and exceeds the largest available size"/>
         </FatalError>
     </MsgDomain>
     <MsgDomain Domain="http://apache.org/xml/messages/XML4JErrors">
diff --git a/src/xercesc/dom/NodeIDMap.cpp b/src/xercesc/dom/NodeIDMap.cpp
index 44a0025b848dcf3d0611653d4ce179977801902e..1d7ba020bb5c13d355576c67081d20262e76cd31 100644
--- a/src/xercesc/dom/NodeIDMap.cpp
+++ b/src/xercesc/dom/NodeIDMap.cpp
@@ -1,37 +1,37 @@
 /*
  * The Apache Software License, Version 1.1
- * 
- * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
+ *
+ * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights
  * reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- * 
+ *    notice, this list of conditions and the following disclaimer.
+ *
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in
  *    the documentation and/or other materials provided with the
  *    distribution.
- * 
+ *
  * 3. The end-user documentation included with the redistribution,
- *    if any, must include the following acknowledgment:  
+ *    if any, must include the following acknowledgment:
  *       "This product includes software developed by the
  *        Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowledgment may appear in the software itself,
  *    if and wherever such third-party acknowledgments normally appear.
- * 
+ *
  * 4. The names "Xerces" and "Apache Software Foundation" must
  *    not be used to endorse or promote products derived from this
- *    software without prior written permission. For written 
+ *    software without prior written permission. For written
  *    permission, please contact apache\@apache.org.
- * 
+ *
  * 5. Products derived from this software may not be called "Apache",
  *    nor may "Apache" appear in their name, without prior written
  *    permission of the Apache Software Foundation.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -45,7 +45,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * ====================================================================
- * 
+ *
  * This software consists of voluntary contributions made by many
  * individuals on behalf of the Apache Software Foundation, and was
  * originally based on software copyright (c) 1999, International
@@ -58,6 +58,7 @@
 #include "AttrImpl.hpp"
 #include "NodeIDMap.hpp"
 #include <xercesc/util/XMLString.hpp>
+#include <xercesc/util/RuntimeException.hpp>
 #include <stdio.h>
 
 static const int gPrimes[] = {997, 9973, 99991, 999983, 0 };  // To do - add a few more.
@@ -65,7 +66,7 @@ static const int gPrimes[] = {997, 9973, 99991, 999983, 0 };  // To do - add a f
 static const float gMaxFill = 0.8f;   // The maximum fraction of the total
                                     // table entries to consume before exanding.
 
-NodeIDMap::NodeIDMap(int initialSize) 
+NodeIDMap::NodeIDMap(int initialSize)
 {
     for (fSizeIndex = 0; gPrimes[fSizeIndex] < initialSize; fSizeIndex++)
     {
@@ -74,10 +75,10 @@ NodeIDMap::NodeIDMap(int initialSize)
             // We need a bigger size than the largest available one.
             //   Big trouble.
             fSizeIndex--;
-            throw "NodeIDMap::NodeIDMap - big trouble.";
+            ThrowXML(RuntimeException, XMLExcepts::NodeIDMap_GrowErr);
         }
     }
-    
+
     fSize = gPrimes[fSizeIndex];
     fNumEntries = 0;
     fMaxEntries = (unsigned long)(float(fSize) * gMaxFill);
@@ -120,7 +121,7 @@ void NodeIDMap::add(AttrImpl *attr)
 
 	//
 	// Loop looking for an empty slot for this ID.
-	//   Don't even bother checking to see if the ID is already there - 
+	//   Don't even bother checking to see if the ID is already there -
 	//   the table is only filled by the parser from valid documents, which
 	//   can not have duplicates.  Behavior of invalid docs is not defined.
 	//
@@ -231,7 +232,9 @@ void NodeIDMap::growTable()
     //
     //  Figure the new table size.
     //
+#if defined(XERCES_DEBUG)
     fprintf(stderr, "growing...\n");
+#endif
     fSizeIndex++;
     fSize = gPrimes[fSizeIndex];
     if (fSize == 0)
@@ -239,7 +242,7 @@ void NodeIDMap::growTable()
         // We need to grow bigger than the largest available size.
         //   Big trouble.
         fSizeIndex--;
-        throw "NodeIDMap::growTable - big trouble.";
+        ThrowXML(RuntimeException, XMLExcepts::NodeIDMap_GrowErr);
     }
 
     //
@@ -260,9 +263,9 @@ void NodeIDMap::growTable()
         if ((oldTable[i] != 0)  &&  (oldTable[i] != (AttrImpl *)-1))
             add(oldTable[i]);
     }
-    
+
     delete [] oldTable;
-    
+
 };
 
 
diff --git a/src/xercesc/idom/IDNodeIDMap.cpp b/src/xercesc/idom/IDNodeIDMap.cpp
index a49068536b20dcd9d5766bfefc7b3e3ae6616416..92b9a534c0e65213fecb1561f99c58b88b6db13d 100644
--- a/src/xercesc/idom/IDNodeIDMap.cpp
+++ b/src/xercesc/idom/IDNodeIDMap.cpp
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
+ * Copyright (c) 2001-2002 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -62,6 +62,7 @@
 #include "IDDocumentImpl.hpp"
 #include "IDNodeIDMap.hpp"
 #include <xercesc/util/XMLString.hpp>
+#include <xercesc/util/RuntimeException.hpp>
 #include <stdio.h>
 
 static const int gPrimes[] = {997, 9973, 99991, 999983, 0 };  // To do - add a few more.
@@ -80,7 +81,7 @@ IDNodeIDMap::IDNodeIDMap(int initialSize, IDOM_Document *doc)
             // We need a bigger size than the largest available one.
             //   Big trouble.
             fSizeIndex--;
-            throw "IDNodeIDMap::IDNodeIDMap - big trouble.";
+            ThrowXML(RuntimeException, XMLExcepts::NodeIDMap_GrowErr);
         }
     }
 
@@ -238,7 +239,9 @@ void IDNodeIDMap::growTable()
     //
     //  Figure the new table size.
     //
+#if defined(XERCES_DEBUG)
     fprintf(stderr, "growing...\n");
+#endif
     fSizeIndex++;
     fSize = gPrimes[fSizeIndex];
     if (fSize == 0)
@@ -246,7 +249,7 @@ void IDNodeIDMap::growTable()
         // We need to grow bigger than the largest available size.
         //   Big trouble.
         fSizeIndex--;
-        throw "IDNodeIDMap::growTable - big trouble.";
+        ThrowXML(RuntimeException, XMLExcepts::NodeIDMap_GrowErr);
     }
 
     //
diff --git a/src/xercesc/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp b/src/xercesc/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp
index f310f43fac228a0a285f7691598744461eab39db..ff8c7ca2da1736b641127a34c07bb50636d4e3e5 100644
--- a/src/xercesc/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp
+++ b/src/xercesc/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp
@@ -764,8 +764,9 @@ const XMLCh gXMLExceptArray[][128] =
   , { 0x0052,0x0065,0x0063,0x0075,0x0072,0x0073,0x0065,0x0055,0x006E,0x006F,0x0072,0x0064,0x0065,0x0072,0x0065,0x0064,0x003A,0x0020,0x0054,0x0068,0x0065,0x0072,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 }
   , { 0x004D,0x0061,0x0070,0x0041,0x006E,0x0064,0x0053,0x0075,0x006D,0x003A,0x0020,0x0054,0x0068,0x0065,0x0072,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 }
   , { 0x0050,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x003A,0x0020,0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 }
+  , { 0x004E,0x006F,0x0064,0x0065,0x0049,0x0044,0x004D,0x0061,0x0070,0x0020,0x006F,0x0076,0x0065,0x0072,0x0066,0x006C,0x006F,0x0077,0x0073,0x0020,0x0061,0x006E,0x0064,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x006C,0x0061,0x0072,0x0067,0x0065,0x0073,0x0074,0x0020,0x0061,0x0076,0x0061,0x0069,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020,0x0073,0x0069,0x007A,0x0065,0x00 }
   , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 }
 
 };
-const unsigned int gXMLExceptArraySize = 357;
+const unsigned int gXMLExceptArraySize = 358;
 
diff --git a/src/xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg b/src/xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg
index 62ac2b1fc7ae7f1f5a6d20d0d9e880b5f18e1c20..b7adcb135aa59be62434f7fe40e610917fb434e8 100644
--- a/src/xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg
+++ b/src/xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg
@@ -742,5 +742,6 @@ $set 3
 351  RecurseUnordered: There is not a complete functional mapping between the particles
 352  MapAndSum: There is not a complete functional mapping between the particles
 353  Particle derivation: Invalid content spec node type
+354  NodeIDMap overflows and exceeds the largest available size
 
 
diff --git a/src/xercesc/util/Platforms/Win32/Version.rc b/src/xercesc/util/Platforms/Win32/Version.rc
index c6bd8586465d9b6358b4268c654d8598a6424cf9..9d87bcb68d4426f3b6433fc66ae82ac9ada7cb01 100644
--- a/src/xercesc/util/Platforms/Win32/Version.rc
+++ b/src/xercesc/util/Platforms/Win32/Version.rc
@@ -847,6 +847,7 @@ BEGIN
     8543              L"\x0052\x0065\x0063\x0075\x0072\x0073\x0065\x0055\x006E\x006F\x0072\x0064\x0065\x0072\x0065\x0064\x003A\x0020\x0054\x0068\x0065\x0072\x0065\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0074\x0065\x0020\x0066\x0075\x006E\x0063\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x006D\x0061\x0070\x0070\x0069\x006E\x0067\x0020\x0062\x0065\x0074\x0077\x0065\x0065\x006E\x0020\x0074\x0068\x0065\x0020\x0070\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x0073\x00"
     8544              L"\x004D\x0061\x0070\x0041\x006E\x0064\x0053\x0075\x006D\x003A\x0020\x0054\x0068\x0065\x0072\x0065\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0074\x0065\x0020\x0066\x0075\x006E\x0063\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x006D\x0061\x0070\x0070\x0069\x006E\x0067\x0020\x0062\x0065\x0074\x0077\x0065\x0065\x006E\x0020\x0074\x0068\x0065\x0020\x0070\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x0073\x00"
     8545              L"\x0050\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x0020\x0064\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x003A\x0020\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0070\x0065\x0063\x0020\x006E\x006F\x0064\x0065\x0020\x0074\x0079\x0070\x0065\x00"
+    8546              L"\x004E\x006F\x0064\x0065\x0049\x0044\x004D\x0061\x0070\x0020\x006F\x0076\x0065\x0072\x0066\x006C\x006F\x0077\x0073\x0020\x0061\x006E\x0064\x0020\x0065\x0078\x0063\x0065\x0065\x0064\x0073\x0020\x0074\x0068\x0065\x0020\x006C\x0061\x0072\x0067\x0065\x0073\x0074\x0020\x0061\x0076\x0061\x0069\x006C\x0061\x0062\x006C\x0065\x0020\x0073\x0069\x007A\x0065\x00"
 END
 
 
diff --git a/src/xercesc/util/XMLExceptMsgs.hpp b/src/xercesc/util/XMLExceptMsgs.hpp
index 0bbf28ae11b78a9676a9c0ec70bcfa0126173e81..f1912401d40a58152f9dc1f855a0cb61a7937c32 100644
--- a/src/xercesc/util/XMLExceptMsgs.hpp
+++ b/src/xercesc/util/XMLExceptMsgs.hpp
@@ -362,9 +362,10 @@ public :
       , PD_RecurseUnordered                = 351
       , PD_MapAndSum                       = 352
       , PD_InvalidContentType              = 353
-      , F_HighBounds                       = 354
-      , E_LowBounds                        = 355
-      , E_HighBounds                       = 356
+      , NodeIDMap_GrowErr                  = 354
+      , F_HighBounds                       = 355
+      , E_LowBounds                        = 356
+      , E_HighBounds                       = 357
     };
 
 };