diff --git a/src/xercesc/util/ValueStackOf.c b/src/xercesc/util/ValueStackOf.c
index 7661258751ce2acce81ae3da58913bc2c9281979..e3d5f59096b5043ed4e62742be712ddef5809b50 100644
--- a/src/xercesc/util/ValueStackOf.c
+++ b/src/xercesc/util/ValueStackOf.c
@@ -56,6 +56,9 @@
 
 /**
  * $Log$
+ * Revision 1.4  2003/05/29 13:26:44  knoaman
+ * Fix memory leak when using deprecated dom.
+ *
  * Revision 1.3  2003/05/16 06:01:52  knoaman
  * Partial implementation of the configurable memory manager.
  *
@@ -97,9 +100,10 @@ XERCES_CPP_NAMESPACE_BEGIN
 // ---------------------------------------------------------------------------
 template <class TElem>
 ValueStackOf<TElem>::ValueStackOf(const unsigned int fInitCapacity,
-                                  MemoryManager* const manager) :
+                                  MemoryManager* const manager,
+                                  const bool toCallDestructor) :
 
-    fVector(fInitCapacity, manager)
+    fVector(fInitCapacity, manager, toCallDestructor)
 {
 }
 
diff --git a/src/xercesc/util/ValueStackOf.hpp b/src/xercesc/util/ValueStackOf.hpp
index 58cec23e08adee06eaa6a3e2586af9cc6e948c1a..6257bc63de8e975ff1d55027505f23110c159e7e 100644
--- a/src/xercesc/util/ValueStackOf.hpp
+++ b/src/xercesc/util/ValueStackOf.hpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.6  2003/05/29 13:26:44  knoaman
+ * Fix memory leak when using deprecated dom.
+ *
  * Revision 1.5  2003/05/16 06:01:52  knoaman
  * Partial implementation of the configurable memory manager.
  *
@@ -114,7 +117,8 @@ public :
     ValueStackOf
     (
           const unsigned int fInitCapacity
-		  , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+          , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+          , const bool toCallDestructor = false
     );
     ~ValueStackOf();
 
diff --git a/src/xercesc/util/ValueVectorOf.c b/src/xercesc/util/ValueVectorOf.c
index 78d0b82005953bdacd88fb7fa40008584938df01..8c2b83ffd06c8843064aae8912307893ce26d813 100644
--- a/src/xercesc/util/ValueVectorOf.c
+++ b/src/xercesc/util/ValueVectorOf.c
@@ -56,6 +56,9 @@
 
 /**
  * $Log$
+ * Revision 1.7  2003/05/29 13:26:44  knoaman
+ * Fix memory leak when using deprecated dom.
+ *
  * Revision 1.6  2003/05/20 21:06:30  knoaman
  * Set values to 0.
  *
@@ -112,9 +115,11 @@ XERCES_CPP_NAMESPACE_BEGIN
 // ---------------------------------------------------------------------------
 template <class TElem>
 ValueVectorOf<TElem>::ValueVectorOf(const unsigned int maxElems,
-                                    MemoryManager* const manager) :
+                                    MemoryManager* const manager,
+                                    const bool toCallDestructor) :
 
-    fCurCount(0)
+    fCallDestructor(toCallDestructor)
+    , fCurCount(0)
     , fMaxCount(maxElems)
     , fElemList(0)
     , fMemoryManager(manager)
@@ -130,7 +135,8 @@ ValueVectorOf<TElem>::ValueVectorOf(const unsigned int maxElems,
 template <class TElem>
 ValueVectorOf<TElem>::ValueVectorOf(const ValueVectorOf<TElem>& toCopy) :
 
-    fCurCount(toCopy.fCurCount)
+    fCallDestructor(toCopy.fCallDestructor)
+    , fCurCount(toCopy.fCurCount)
     , fMaxCount(toCopy.fMaxCount)
     , fElemList(0)
     , fMemoryManager(toCopy.fMemoryManager)
@@ -139,12 +145,18 @@ ValueVectorOf<TElem>::ValueVectorOf(const ValueVectorOf<TElem>& toCopy) :
     (
         fMaxCount * sizeof(TElem)
     ); //new TElem[fMaxCount];
+
+    memset(fElemList, 0, fMaxCount * sizeof(TElem));
     for (unsigned int index = 0; index < fCurCount; index++)
         fElemList[index] = toCopy.fElemList[index];
 }
 
 template <class TElem> ValueVectorOf<TElem>::~ValueVectorOf()
 {
+    if (fCallDestructor) {
+        for (int index= fMaxCount - 1; index >= 0; index--)
+            fElemList[index].~TElem();
+    }
     fMemoryManager->deallocate(fElemList); //delete [] fElemList;
 }
 
diff --git a/src/xercesc/util/ValueVectorOf.hpp b/src/xercesc/util/ValueVectorOf.hpp
index 93f9b09d337017b457b75f2589923a9d2a7d798d..d0871331ce47e97a98a520ac4981299a0869af72 100644
--- a/src/xercesc/util/ValueVectorOf.hpp
+++ b/src/xercesc/util/ValueVectorOf.hpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.7  2003/05/29 13:26:44  knoaman
+ * Fix memory leak when using deprecated dom.
+ *
  * Revision 1.6  2003/05/16 21:37:00  knoaman
  * Memory manager implementation: Modify constructors to pass in the memory manager.
  *
@@ -120,6 +123,7 @@ public :
     (
         const unsigned int maxElems
         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+        , const bool toCallDestructor = false
     );
     ValueVectorOf(const ValueVectorOf<TElem>& toCopy);
     ~ValueVectorOf();
@@ -174,6 +178,7 @@ private:
     //      The list of elements, which is dynamically allocated to the needed
     //      size.
     // -----------------------------------------------------------------------
+    bool            fCallDestructor;
     unsigned int    fCurCount;
     unsigned int    fMaxCount;
     TElem*          fElemList;