From 9dc819ca4a4a257eb5ddffae6701facc1b0e5b8d Mon Sep 17 00:00:00 2001
From: Gareth Reakes <gareth@apache.org>
Date: Wed, 18 Dec 2002 14:17:59 +0000
Subject: [PATCH] Fix to bug #13438. When you eant a vector that calls delete[]
 on its members you should use RefArrayVectorOf.

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174540 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/internal/IGXMLScanner2.cpp        |  2 +-
 src/xercesc/internal/SGXMLScanner.cpp         |  2 +-
 src/xercesc/util/XMLString.cpp                |  5 ++-
 src/xercesc/util/XMLString.hpp                |  8 ++--
 src/xercesc/util/XMLStringTokenizer.cpp       |  7 +++-
 src/xercesc/util/XMLStringTokenizer.hpp       |  4 +-
 src/xercesc/validators/DTD/DTDScanner.cpp     |  5 ++-
 .../AbstractNumericFacetValidator.cpp         |  7 +++-
 .../AbstractNumericFacetValidator.hpp         | 11 ++++--
 .../datatype/AbstractNumericValidator.hpp     |  7 +++-
 .../datatype/AbstractStringValidator.cpp      |  7 +++-
 .../datatype/AbstractStringValidator.hpp      | 17 +++++----
 .../AnySimpleTypeDatatypeValidator.cpp        |  7 +++-
 .../AnySimpleTypeDatatypeValidator.hpp        |  4 +-
 .../datatype/AnyURIDatatypeValidator.cpp      |  7 +++-
 .../datatype/AnyURIDatatypeValidator.hpp      |  7 +++-
 .../Base64BinaryDatatypeValidator.cpp         |  7 +++-
 .../Base64BinaryDatatypeValidator.hpp         |  7 +++-
 .../datatype/BooleanDatatypeValidator.cpp     |  7 +++-
 .../datatype/BooleanDatatypeValidator.hpp     |  8 ++--
 .../validators/datatype/DatatypeValidator.hpp |  4 +-
 .../datatype/DatatypeValidatorFactory.cpp     |  5 ++-
 .../datatype/DatatypeValidatorFactory.hpp     |  4 +-
 .../datatype/DateDatatypeValidator.cpp        |  7 +++-
 .../datatype/DateDatatypeValidator.hpp        |  7 +++-
 .../datatype/DateTimeDatatypeValidator.cpp    |  7 +++-
 .../datatype/DateTimeDatatypeValidator.hpp    |  7 +++-
 .../datatype/DayDatatypeValidator.cpp         |  7 +++-
 .../datatype/DayDatatypeValidator.hpp         |  7 +++-
 .../datatype/DecimalDatatypeValidator.cpp     |  7 +++-
 .../datatype/DecimalDatatypeValidator.hpp     |  7 +++-
 .../datatype/DoubleDatatypeValidator.cpp      |  7 +++-
 .../datatype/DoubleDatatypeValidator.hpp      |  7 +++-
 .../datatype/DurationDatatypeValidator.cpp    |  7 +++-
 .../datatype/DurationDatatypeValidator.hpp    |  7 +++-
 .../datatype/ENTITYDatatypeValidator.cpp      |  7 +++-
 .../datatype/ENTITYDatatypeValidator.hpp      |  7 +++-
 .../datatype/FloatDatatypeValidator.cpp       |  7 +++-
 .../datatype/FloatDatatypeValidator.hpp       |  7 +++-
 .../datatype/HexBinaryDatatypeValidator.cpp   |  7 +++-
 .../datatype/HexBinaryDatatypeValidator.hpp   |  7 +++-
 .../datatype/IDDatatypeValidator.cpp          |  7 +++-
 .../datatype/IDDatatypeValidator.hpp          |  7 +++-
 .../datatype/IDREFDatatypeValidator.cpp       |  7 +++-
 .../datatype/IDREFDatatypeValidator.hpp       |  7 +++-
 .../datatype/ListDatatypeValidator.cpp        | 37 ++++++++++---------
 .../datatype/ListDatatypeValidator.hpp        | 11 ++++--
 .../datatype/MonthDatatypeValidator.cpp       |  7 +++-
 .../datatype/MonthDatatypeValidator.hpp       |  7 +++-
 .../datatype/MonthDayDatatypeValidator.cpp    |  7 +++-
 .../datatype/MonthDayDatatypeValidator.hpp    |  7 +++-
 .../datatype/NCNameDatatypeValidator.cpp      |  7 +++-
 .../datatype/NCNameDatatypeValidator.hpp      |  7 +++-
 .../datatype/NOTATIONDatatypeValidator.cpp    |  7 +++-
 .../datatype/NOTATIONDatatypeValidator.hpp    |  7 +++-
 .../datatype/NameDatatypeValidator.cpp        |  7 +++-
 .../datatype/NameDatatypeValidator.hpp        |  7 +++-
 .../datatype/QNameDatatypeValidator.cpp       |  7 +++-
 .../datatype/QNameDatatypeValidator.hpp       |  7 +++-
 .../datatype/StringDatatypeValidator.cpp      |  7 +++-
 .../datatype/StringDatatypeValidator.hpp      |  7 +++-
 .../datatype/TimeDatatypeValidator.cpp        |  7 +++-
 .../datatype/TimeDatatypeValidator.hpp        |  7 +++-
 .../datatype/UnionDatatypeValidator.cpp       | 11 ++++--
 .../datatype/UnionDatatypeValidator.hpp       | 23 +++++++-----
 .../datatype/YearDatatypeValidator.cpp        |  7 +++-
 .../datatype/YearDatatypeValidator.hpp        |  7 +++-
 .../datatype/YearMonthDatatypeValidator.cpp   |  7 +++-
 .../datatype/YearMonthDatatypeValidator.hpp   |  7 +++-
 .../validators/schema/TraverseSchema.cpp      | 10 ++---
 .../schema/identity/FieldValueMap.cpp         |  5 ++-
 .../schema/identity/FieldValueMap.hpp         |  5 ++-
 .../validators/schema/identity/ValueStore.hpp |  1 +
 73 files changed, 367 insertions(+), 179 deletions(-)

diff --git a/src/xercesc/internal/IGXMLScanner2.cpp b/src/xercesc/internal/IGXMLScanner2.cpp
index f4290e5c9..dbd912ea9 100644
--- a/src/xercesc/internal/IGXMLScanner2.cpp
+++ b/src/xercesc/internal/IGXMLScanner2.cpp
@@ -1203,7 +1203,7 @@ void IGXMLScanner::scanRawAttrListforNameSpaces(const RefVectorOf<KVStringPair>*
 
 void IGXMLScanner::parseSchemaLocation(const XMLCh* const schemaLocationStr)
 {
-    RefVectorOf<XMLCh>* schemaLocation = XMLString::tokenizeString(schemaLocationStr);
+    BaseRefVectorOf<XMLCh>* schemaLocation = XMLString::tokenizeString(schemaLocationStr);
     unsigned int size = schemaLocation->size();
     if (size % 2 != 0 ) {
         emitError(XMLErrs::BadSchemaLocation);
diff --git a/src/xercesc/internal/SGXMLScanner.cpp b/src/xercesc/internal/SGXMLScanner.cpp
index 9d6e97be0..8d976b1ba 100644
--- a/src/xercesc/internal/SGXMLScanner.cpp
+++ b/src/xercesc/internal/SGXMLScanner.cpp
@@ -2916,7 +2916,7 @@ void SGXMLScanner::scanRawAttrListforNameSpaces(const RefVectorOf<KVStringPair>*
 
 void SGXMLScanner::parseSchemaLocation(const XMLCh* const schemaLocationStr)
 {
-    RefVectorOf<XMLCh>* schemaLocation = XMLString::tokenizeString(schemaLocationStr);
+    BaseRefVectorOf<XMLCh>* schemaLocation = XMLString::tokenizeString(schemaLocationStr);
     unsigned int size = schemaLocation->size();
     if (size % 2 != 0 ) {
         emitError(XMLErrs::BadSchemaLocation);
diff --git a/src/xercesc/util/XMLString.cpp b/src/xercesc/util/XMLString.cpp
index fe01848e0..d16be63d2 100644
--- a/src/xercesc/util/XMLString.cpp
+++ b/src/xercesc/util/XMLString.cpp
@@ -71,6 +71,7 @@
 #include <xercesc/util/NumberFormatException.hpp>
 #include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/RefArrayVectorOf.hpp>
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/TransService.hpp>
 #include <xercesc/util/TranscodingException.hpp>
@@ -1466,13 +1467,13 @@ void XMLString::subString(XMLCh* const targetStr, const XMLCh* const srcStr
     targetStr[copySize] = 0;
 }
 
-RefVectorOf<XMLCh>* XMLString::tokenizeString(const XMLCh* const tokenizeSrc)
+BaseRefVectorOf<XMLCh>* XMLString::tokenizeString(const XMLCh* const tokenizeSrc)
 {
     XMLCh* orgText = replicate(tokenizeSrc);
     ArrayJanitor<XMLCh> janText(orgText);
     XMLCh* tokenizeStr = orgText;
 
-    RefVectorOf<XMLCh>* tokenStack = new RefVectorOf<XMLCh>(16, true);
+    RefArrayVectorOf<XMLCh>* tokenStack = new RefArrayVectorOf<XMLCh>(16, true);
 
     unsigned int len = stringLen(tokenizeStr);
     unsigned int skip;
diff --git a/src/xercesc/util/XMLString.hpp b/src/xercesc/util/XMLString.hpp
index a266099ee..57d343f4e 100644
--- a/src/xercesc/util/XMLString.hpp
+++ b/src/xercesc/util/XMLString.hpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.10  2002/12/18 14:17:54  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.9  2002/12/04 02:32:43  knoaman
  * #include cleanup.
  *
@@ -210,12 +213,11 @@
 #if !defined(XMLSTRING_HPP)
 #define XMLSTRING_HPP
 
-#include <xercesc/util/RefVectorOf.hpp>
+#include <xercesc/util/BaseRefVectorOf.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
 
 class XMLLCPTranscoder;
-
 /**
   * Class for representing native character strings and handling common string
   * operations
@@ -1259,7 +1261,7 @@ public:
       * @param tokenizeSrc String to be tokenized
       * @return a vector of all the tokenized string
       */
-    static RefVectorOf<XMLCh>* tokenizeString(const XMLCh* const tokenizeSrc);
+    static BaseRefVectorOf<XMLCh>* tokenizeString(const XMLCh* const tokenizeSrc);
 
     /** Find is the string appears in the enum list
       * @param toFind the string to be found
diff --git a/src/xercesc/util/XMLStringTokenizer.cpp b/src/xercesc/util/XMLStringTokenizer.cpp
index cd4492c3b..ce029377d 100644
--- a/src/xercesc/util/XMLStringTokenizer.cpp
+++ b/src/xercesc/util/XMLStringTokenizer.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:54  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 15:22:05  tng
  * C++ Namespace Support.
  *
@@ -97,7 +100,7 @@ XMLStringTokenizer::XMLStringTokenizer(const XMLCh* const srcStr)
         fDelimeters = XMLString::replicate(fgDelimeters);
 
         if (fStringLen > 0) {
-            fTokens = new RefVectorOf<XMLCh>(4, true);
+            fTokens = new RefArrayVectorOf<XMLCh>(4, true);
         }
     }
     catch(...) {
@@ -117,7 +120,7 @@ XMLStringTokenizer::XMLStringTokenizer(const XMLCh* const srcStr,
         fDelimeters = XMLString::replicate(delim);
 
         if (fStringLen > 0) {
-            fTokens = new RefVectorOf<XMLCh>(4, true);
+            fTokens = new RefArrayVectorOf<XMLCh>(4, true);
         }
     }
     catch(...) {
diff --git a/src/xercesc/util/XMLStringTokenizer.hpp b/src/xercesc/util/XMLStringTokenizer.hpp
index ab764c9b3..f46134773 100644
--- a/src/xercesc/util/XMLStringTokenizer.hpp
+++ b/src/xercesc/util/XMLStringTokenizer.hpp
@@ -61,7 +61,7 @@
 #if !defined(XMLSTRINGTOKENIZER_HPP)
 #define XMLSTRINGTOKENIZER_HPP
 
-#include <xercesc/util/RefVectorOf.hpp>
+#include <xercesc/util/RefArrayVectorOf.hpp>
 #include <xercesc/util/XMLString.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
@@ -188,7 +188,7 @@ private:
     int                 fStringLen;
 	XMLCh*              fString;
     XMLCh*              fDelimeters;
-	RefVectorOf<XMLCh>* fTokens;
+	RefArrayVectorOf<XMLCh>* fTokens;
 };
 
 
diff --git a/src/xercesc/validators/DTD/DTDScanner.cpp b/src/xercesc/validators/DTD/DTDScanner.cpp
index 4145069c4..e44edc01c 100644
--- a/src/xercesc/validators/DTD/DTDScanner.cpp
+++ b/src/xercesc/validators/DTD/DTDScanner.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.18  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.17  2002/12/04 02:47:25  knoaman
  * scanner re-organization.
  *
@@ -709,7 +712,7 @@ DTDScanner::scanAttDef(DTDElementDecl& parentElem, XMLBuffer& bufToUse)
             const XMLCh fgDefault[] = { chLatin_d, chLatin_e, chLatin_f, chLatin_a, chLatin_u, chLatin_l, chLatin_t, chNull };
             bool ok = false;
             if (decl->getType() == XMLAttDef::Enumeration) {
-                RefVectorOf<XMLCh>* enumVector = XMLString::tokenizeString(decl->getEnumeration());
+                BaseRefVectorOf<XMLCh>* enumVector = XMLString::tokenizeString(decl->getEnumeration());
                 int size = enumVector->size();
                 ok = (size == 1 &&
                      (XMLString::equals(enumVector->elementAt(0), fgDefault) ||
diff --git a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
index 43d9434c8..1acccd889 100644
--- a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
+++ b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.7  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.6  2002/11/26 22:19:15  peiyongz
  * Schema Errata E2-16 maxExclusive
  *
@@ -186,7 +189,7 @@ AbstractNumericFacetValidator::AbstractNumericFacetValidator(
 //
 //  P1. Enumeration
 //
-void AbstractNumericFacetValidator::init(RefVectorOf<XMLCh>* const enums)
+void AbstractNumericFacetValidator::init(RefArrayVectorOf<XMLCh>* const enums)
 {
 
     fStrEnumeration = enums; // save the literal value
@@ -839,7 +842,7 @@ void AbstractNumericFacetValidator::inheritFacet()
 
 }
 
-const RefVectorOf<XMLCh>* AbstractNumericFacetValidator::getEnumString() const
+const RefArrayVectorOf<XMLCh>* AbstractNumericFacetValidator::getEnumString() const
 {
 	return (fEnumerationInherited? getBaseValidator()->getEnumString() : fStrEnumeration );
 }
diff --git a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp
index 97bdb3a52..0b89411a1 100644
--- a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp
+++ b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.5  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.4  2002/11/04 14:53:27  tng
  * C++ Namespace Support.
  *
@@ -85,7 +88,7 @@
 #define ABSTRACT_NUMERIC_FACET_VALIDATOR_HPP
 
 #include <xercesc/validators/datatype/DatatypeValidator.hpp>
-#include <xercesc/util/RefVectorOf.hpp>
+#include <xercesc/util/RefArrayVectorOf.hpp>
 #include <xercesc/util/XMLNumber.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
@@ -104,7 +107,7 @@ public:
 
 	//@}
 
-	virtual const RefVectorOf<XMLCh>* getEnumString() const;
+	virtual const RefArrayVectorOf<XMLCh>* getEnumString() const;
 
 protected:
 
@@ -113,7 +116,7 @@ protected:
                                 , const int                           finalSet
                                 , const ValidatorType                 type);
 
-    void init(RefVectorOf<XMLCh>*  const enums);
+    void init(RefArrayVectorOf<XMLCh>*  const enums);
 
     //
     // Abstract interface
@@ -183,7 +186,7 @@ protected:
     XMLNumber*               fMinExclusive;
 
     RefVectorOf<XMLNumber>*  fEnumeration;    // save the actual value
-    RefVectorOf<XMLCh>*      fStrEnumeration;
+    RefArrayVectorOf<XMLCh>*      fStrEnumeration;
 
 private:
 
diff --git a/src/xercesc/validators/datatype/AbstractNumericValidator.hpp b/src/xercesc/validators/datatype/AbstractNumericValidator.hpp
index b39d7d476..b62c53866 100644
--- a/src/xercesc/validators/datatype/AbstractNumericValidator.hpp
+++ b/src/xercesc/validators/datatype/AbstractNumericValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:27  tng
  * C++ Namespace Support.
  *
@@ -103,7 +106,7 @@ protected:
                            , const int                           finalSet
                            , const ValidatorType                 type);
 
-    inline void init(RefVectorOf<XMLCh>*  const enums);
+    inline void init(RefArrayVectorOf<XMLCh>*  const enums);
 
     //
     // Abstract interface
@@ -122,7 +125,7 @@ private:
 
 };
 
-inline void AbstractNumericValidator::init(RefVectorOf<XMLCh>*  const enums)
+inline void AbstractNumericValidator::init(RefArrayVectorOf<XMLCh>*  const enums)
 {
     AbstractNumericFacetValidator::init(enums);
 }
diff --git a/src/xercesc/validators/datatype/AbstractStringValidator.cpp b/src/xercesc/validators/datatype/AbstractStringValidator.cpp
index 01e5b11ba..16de3dc5b 100644
--- a/src/xercesc/validators/datatype/AbstractStringValidator.cpp
+++ b/src/xercesc/validators/datatype/AbstractStringValidator.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.7  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.6  2002/11/04 14:53:27  tng
  * C++ Namespace Support.
  *
@@ -168,7 +171,7 @@ AbstractStringValidator::AbstractStringValidator(
     // assigneAdditionalFacet(), inheritAdditionalFacet().
 }
 
-void AbstractStringValidator::init(RefVectorOf<XMLCh>*           const enums)
+void AbstractStringValidator::init(RefArrayVectorOf<XMLCh>*           const enums)
 {
 
     if (enums)
@@ -670,7 +673,7 @@ void AbstractStringValidator::checkContent( const XMLCh* const content, bool asB
 
 }
 
-const RefVectorOf<XMLCh>* AbstractStringValidator::getEnumString() const
+const RefArrayVectorOf<XMLCh>* AbstractStringValidator::getEnumString() const
 {
 	return getEnumeration();
 }
diff --git a/src/xercesc/validators/datatype/AbstractStringValidator.hpp b/src/xercesc/validators/datatype/AbstractStringValidator.hpp
index c4d2cba0e..95f6bd686 100644
--- a/src/xercesc/validators/datatype/AbstractStringValidator.hpp
+++ b/src/xercesc/validators/datatype/AbstractStringValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.5  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.4  2002/11/04 14:53:27  tng
  * C++ Namespace Support.
  *
@@ -129,7 +132,7 @@ public:
 
 	//@}
 
-	virtual const RefVectorOf<XMLCh>* getEnumString() const;
+	virtual const RefArrayVectorOf<XMLCh>* getEnumString() const;
 
     // -----------------------------------------------------------------------
     // Validation methods
@@ -166,7 +169,7 @@ protected:
                           , const int                           finalSet
                           , const ValidatorType                 type);
 
-    void init(RefVectorOf<XMLCh>*           const enums);
+    void init(RefArrayVectorOf<XMLCh>*           const enums);
 
     //
     // Abstract interface
@@ -204,7 +207,7 @@ public:
 
     inline unsigned int         getMinLength() const;
 
-    inline RefVectorOf<XMLCh>*  getEnumeration() const;
+    inline RefArrayVectorOf<XMLCh>*  getEnumeration() const;
 
 protected:
 // -----------------------------------------------------------------------
@@ -217,7 +220,7 @@ protected:
 
     inline void                 setMinLength(unsigned int);
 
-    inline void                 setEnumeration(RefVectorOf<XMLCh>*, bool);
+    inline void                 setEnumeration(RefArrayVectorOf<XMLCh>*, bool);
 
 private:
 
@@ -233,7 +236,7 @@ private:
      unsigned int         fMaxLength;
      unsigned int         fMinLength;
      bool                 fEnumerationInherited;
-     RefVectorOf<XMLCh>*  fEnumeration;
+     RefArrayVectorOf<XMLCh>*  fEnumeration;
 };
 
 // -----------------------------------------------------------------------
@@ -255,7 +258,7 @@ inline unsigned int AbstractStringValidator::getMinLength() const
     return fMinLength;
 }
 
-inline RefVectorOf<XMLCh>* AbstractStringValidator:: getEnumeration() const
+inline RefArrayVectorOf<XMLCh>* AbstractStringValidator:: getEnumeration() const
 {
     return fEnumeration;
 }
@@ -279,7 +282,7 @@ inline void AbstractStringValidator::setMinLength(unsigned int newMinLength)
     fMinLength = newMinLength;
 }
 
-inline void AbstractStringValidator::setEnumeration(RefVectorOf<XMLCh>* enums
+inline void AbstractStringValidator::setEnumeration(RefArrayVectorOf<XMLCh>* enums
                                            , bool                inherited)
 {
     if (enums)
diff --git a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp
index 6f1786c18..0ec11e50a 100644
--- a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.4  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.3  2002/11/04 14:53:27  tng
  * C++ Namespace Support.
  *
@@ -100,7 +103,7 @@ AnySimpleTypeDatatypeValidator::~AnySimpleTypeDatatypeValidator()
 // ---------------------------------------------------------------------------
 DatatypeValidator*
 AnySimpleTypeDatatypeValidator::newInstance(RefHashTableOf<KVStringPair>* const facets,
-                                            RefVectorOf<XMLCh>* const enums,
+                                            RefArrayVectorOf<XMLCh>* const enums,
                                             const int finalSet) {
 
     // We own them, so we will delete them first
@@ -113,7 +116,7 @@ AnySimpleTypeDatatypeValidator::newInstance(RefHashTableOf<KVStringPair>* const
     return 0;
 }
 
-const RefVectorOf<XMLCh>* AnySimpleTypeDatatypeValidator::getEnumString() const
+const RefArrayVectorOf<XMLCh>* AnySimpleTypeDatatypeValidator::getEnumString() const
 {
 	return 0;
 }
diff --git a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp
index 9f760be19..ae1b44dfa 100644
--- a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp
@@ -88,7 +88,7 @@ public:
 
 	//@}
 
-	virtual const RefVectorOf<XMLCh>* getEnumString() const;
+	virtual const RefArrayVectorOf<XMLCh>* getEnumString() const;
 
     // -----------------------------------------------------------------------
     // Getter methods
@@ -154,7 +154,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
 	DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const,
-                                   RefVectorOf<XMLCh>* const enums,
+                                   RefArrayVectorOf<XMLCh>* const enums,
                                    const int finalSet);
 };
 
diff --git a/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp b/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp
index 5a76dff28..adf7d5675 100644
--- a/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:27  tng
  * C++ Namespace Support.
  *
@@ -136,7 +139,7 @@ AnyURIDatatypeValidator::~AnyURIDatatypeValidator()
 AnyURIDatatypeValidator::AnyURIDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::AnyURI)
 ,fTempURI(0)
@@ -154,7 +157,7 @@ AnyURIDatatypeValidator::AnyURIDatatypeValidator(
 
 DatatypeValidator* AnyURIDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new AnyURIDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp b/src/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp
index 40017fef5..9e7edb787 100644
--- a/src/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:27  tng
  * C++ Namespace Support.
  *
@@ -115,7 +118,7 @@ public:
 
     AnyURIDatatypeValidator(DatatypeValidator*            const baseValidator
                           , RefHashTableOf<KVStringPair>* const facets
-                          , RefVectorOf<XMLCh>*           const enums
+                          , RefArrayVectorOf<XMLCh>*           const enums
                           , const int                           finalSet);
 
     virtual ~AnyURIDatatypeValidator();
@@ -127,7 +130,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp b/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp
index 8d2519e3c..429b1a1b8 100644
--- a/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -124,7 +127,7 @@ Base64BinaryDatatypeValidator::~Base64BinaryDatatypeValidator()
 Base64BinaryDatatypeValidator::Base64BinaryDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::Base64Binary)
 {
@@ -133,7 +136,7 @@ Base64BinaryDatatypeValidator::Base64BinaryDatatypeValidator(
 
 DatatypeValidator* Base64BinaryDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new Base64BinaryDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp b/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp
index 0e8f27ea3..c0ead5f49 100644
--- a/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -92,7 +95,7 @@ public:
 
     Base64BinaryDatatypeValidator(DatatypeValidator*            const baseValidator
                                 , RefHashTableOf<KVStringPair>* const facets
-                                , RefVectorOf<XMLCh>*           const enums
+                                , RefArrayVectorOf<XMLCh>*           const enums
                                 , const int                           finalSet);
 
     virtual ~Base64BinaryDatatypeValidator();
@@ -104,7 +107,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp b/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
index 8528c23ec..a5da5d201 100644
--- a/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.6  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.5  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -119,7 +122,7 @@ const XMLCh fgValueSpace[][32] =
 BooleanDatatypeValidator::BooleanDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::Boolean)
 {
@@ -238,7 +241,7 @@ int BooleanDatatypeValidator::compare(const XMLCh* const lValue
     return 1;
 }
 
-const RefVectorOf<XMLCh>* BooleanDatatypeValidator::getEnumString() const
+const RefArrayVectorOf<XMLCh>* BooleanDatatypeValidator::getEnumString() const
 {
 	return 0;
 }
diff --git a/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp b/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp
index 6ec331192..a2c5fd308 100644
--- a/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp
@@ -79,14 +79,14 @@ public:
 
     BooleanDatatypeValidator(DatatypeValidator*            const baseValidator
                            , RefHashTableOf<KVStringPair>* const facets
-                           , RefVectorOf<XMLCh>*           const enums
+                           , RefArrayVectorOf<XMLCh>*           const enums
                            , const int                           finalSet);
 
     virtual ~BooleanDatatypeValidator();
 
 	//@}
 
-	virtual const RefVectorOf<XMLCh>* getEnumString() const;
+	virtual const RefArrayVectorOf<XMLCh>* getEnumString() const;
 
     // -----------------------------------------------------------------------
     // Getter methods
@@ -137,7 +137,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                 , RefVectorOf<XMLCh>*           const enums
+                                 , RefArrayVectorOf<XMLCh>*           const enums
                                  , const int                           finalSet);
 
 private:
@@ -174,7 +174,7 @@ inline BooleanDatatypeValidator::~BooleanDatatypeValidator()
 
 inline DatatypeValidator* BooleanDatatypeValidator::newInstance(
                                     RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new BooleanDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/DatatypeValidator.hpp b/src/xercesc/validators/datatype/DatatypeValidator.hpp
index 2afbdcba7..a9985f55e 100644
--- a/src/xercesc/validators/datatype/DatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DatatypeValidator.hpp
@@ -198,7 +198,7 @@ public:
       * Returns the datatype enumeration if any is set.
 	  * Derived class shall provide their own copy.
       */
-	virtual const RefVectorOf<XMLCh>* getEnumString() const = 0;
+	virtual const RefArrayVectorOf<XMLCh>* getEnumString() const = 0;
 
     //@}
 
@@ -258,7 +258,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
 	virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const,
-                                           RefVectorOf<XMLCh>* const enums,
+                                           RefArrayVectorOf<XMLCh>* const enums,
                                            const int finalSet) = 0;
 
 protected:
diff --git a/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp b/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp
index a09695bfc..953c5b6e6 100644
--- a/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp
+++ b/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.9  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.8  2002/12/02 16:01:24  gareth
  * Fix to bug #12188. NCNAME validator now has a base validator of NAME. Patch by Peter Volchek.
  *
@@ -680,7 +683,7 @@ DatatypeValidator*
 DatatypeValidatorFactory::createDatatypeValidator(const XMLCh* const typeName,
 		                                          DatatypeValidator* const baseValidator,
                                                   RefHashTableOf<KVStringPair>* const facets,
-                                                  RefVectorOf<XMLCh>* const enums,
+                                                  RefArrayVectorOf<XMLCh>* const enums,
                                                   const bool derivedByList,
                                                   const int finalSet,
                                                   const bool userDefined)
diff --git a/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp b/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp
index 3acd8c973..cb5714db9 100644
--- a/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp
+++ b/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp
@@ -94,7 +94,7 @@ XERCES_CPP_NAMESPACE_BEGIN
 // ---------------------------------------------------------------------------
 typedef RefHashTableOf<KVStringPair> KVStringPairHashTable;
 typedef RefHashTableOf<DatatypeValidator> DVHashTable;
-typedef RefVectorOf<XMLCh> XMLChRefVector;
+typedef RefArrayVectorOf<XMLCh> XMLChRefVector;
 
 
 class VALIDATORS_EXPORT DatatypeValidatorFactory
@@ -190,7 +190,7 @@ public:
      DatatypeValidator* createDatatypeValidator(const XMLCh* const,
                                                DatatypeValidator* const,
                                                RefHashTableOf<KVStringPair>* const,
-                                               RefVectorOf<XMLCh>* const enums,
+                                               RefArrayVectorOf<XMLCh>* const enums,
                                                const bool,
                                                const int = 0,
                                                const bool = true);
diff --git a/src/xercesc/validators/datatype/DateDatatypeValidator.cpp b/src/xercesc/validators/datatype/DateDatatypeValidator.cpp
index 0f27d8c42..69ce0eea5 100644
--- a/src/xercesc/validators/datatype/DateDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DateDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -91,7 +94,7 @@ DateDatatypeValidator::DateDatatypeValidator()
 DateDatatypeValidator::DateDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Date)
 {
@@ -103,7 +106,7 @@ DateDatatypeValidator::~DateDatatypeValidator()
 
 DatatypeValidator* DateDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new DateDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/DateDatatypeValidator.hpp b/src/xercesc/validators/datatype/DateDatatypeValidator.hpp
index e9180ee77..6522c2de7 100644
--- a/src/xercesc/validators/datatype/DateDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DateDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -89,7 +92,7 @@ public:
 
     DateDatatypeValidator(DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet);
 
     ~DateDatatypeValidator();
@@ -102,7 +105,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp b/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp
index 174e977bd..0f519f8f3 100644
--- a/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -91,7 +94,7 @@ DateTimeDatatypeValidator::DateTimeDatatypeValidator()
 DateTimeDatatypeValidator::DateTimeDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::DateTime)
 {
@@ -103,7 +106,7 @@ DateTimeDatatypeValidator::~DateTimeDatatypeValidator()
 
 DatatypeValidator* DateTimeDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new DateTimeDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp b/src/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp
index 913172b4c..e12473b15 100644
--- a/src/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -89,7 +92,7 @@ public:
 
     DateTimeDatatypeValidator(DatatypeValidator*            const baseValidator
                             , RefHashTableOf<KVStringPair>* const facets
-                            , RefVectorOf<XMLCh>*           const enums
+                            , RefArrayVectorOf<XMLCh>*           const enums
                             , const int                           finalSet);
 
     ~DateTimeDatatypeValidator();
@@ -102,7 +105,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/DayDatatypeValidator.cpp b/src/xercesc/validators/datatype/DayDatatypeValidator.cpp
index 320e08e34..f93d11ef6 100644
--- a/src/xercesc/validators/datatype/DayDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DayDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -91,7 +94,7 @@ DayDatatypeValidator::DayDatatypeValidator()
 DayDatatypeValidator::DayDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Day)
 {
@@ -103,7 +106,7 @@ DayDatatypeValidator::~DayDatatypeValidator()
 
 DatatypeValidator* DayDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new DayDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/DayDatatypeValidator.hpp b/src/xercesc/validators/datatype/DayDatatypeValidator.hpp
index 42b7ab025..eb270f04b 100644
--- a/src/xercesc/validators/datatype/DayDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DayDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -89,7 +92,7 @@ public:
 
     DayDatatypeValidator(DatatypeValidator*            const baseValidator
                        , RefHashTableOf<KVStringPair>* const facets
-                       , RefVectorOf<XMLCh>*           const enums
+                       , RefArrayVectorOf<XMLCh>*           const enums
                        , const int                           finalSet);
 
     ~DayDatatypeValidator();
@@ -101,7 +104,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp b/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp
index aaef6fd4d..0e89ad75f 100644
--- a/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.5  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.4  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -152,7 +155,7 @@ DecimalDatatypeValidator::DecimalDatatypeValidator()
 DecimalDatatypeValidator::DecimalDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :AbstractNumericValidator(baseValidator, facets, finalSet, DatatypeValidator::Decimal)
 , fTotalDigits(0)
@@ -180,7 +183,7 @@ int DecimalDatatypeValidator::compare(const XMLCh* const lValue
 
 DatatypeValidator* DecimalDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new DecimalDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/DecimalDatatypeValidator.hpp b/src/xercesc/validators/datatype/DecimalDatatypeValidator.hpp
index 5c114c9d6..663ad3918 100644
--- a/src/xercesc/validators/datatype/DecimalDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DecimalDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.4  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.3  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -103,7 +106,7 @@ public:
 
     DecimalDatatypeValidator(DatatypeValidator*            const baseValidator
                            , RefHashTableOf<KVStringPair>* const facets
-                           , RefVectorOf<XMLCh>*           const enums
+                           , RefArrayVectorOf<XMLCh>*           const enums
                            , const int                           finalSet);
 
     virtual ~DecimalDatatypeValidator();
@@ -132,7 +135,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp b/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp
index c137cd7a6..3326107ec 100644
--- a/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -104,7 +107,7 @@ DoubleDatatypeValidator::DoubleDatatypeValidator()
 DoubleDatatypeValidator::DoubleDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :AbstractNumericValidator(baseValidator, facets, finalSet, DatatypeValidator::Double)
 {
@@ -130,7 +133,7 @@ int DoubleDatatypeValidator::compare(const XMLCh* const lValue
 
 DatatypeValidator* DoubleDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new DoubleDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/DoubleDatatypeValidator.hpp b/src/xercesc/validators/datatype/DoubleDatatypeValidator.hpp
index 55187bb06..5342594d1 100644
--- a/src/xercesc/validators/datatype/DoubleDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DoubleDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -105,7 +108,7 @@ public:
 
     DoubleDatatypeValidator(DatatypeValidator*            const baseValidator
                           , RefHashTableOf<KVStringPair>* const facets
-                          , RefVectorOf<XMLCh>*           const enums
+                          , RefArrayVectorOf<XMLCh>*           const enums
                           , const int                           finalSet);
 
     virtual ~DoubleDatatypeValidator();
@@ -134,7 +137,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp b/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp
index 43b3b5d75..1288a009b 100644
--- a/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -91,7 +94,7 @@ DurationDatatypeValidator::DurationDatatypeValidator()
 DurationDatatypeValidator::DurationDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Duration)
 {
@@ -103,7 +106,7 @@ DurationDatatypeValidator::~DurationDatatypeValidator()
 
 DatatypeValidator* DurationDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new DurationDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/DurationDatatypeValidator.hpp b/src/xercesc/validators/datatype/DurationDatatypeValidator.hpp
index 39bdb3bb0..e411e9b20 100644
--- a/src/xercesc/validators/datatype/DurationDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DurationDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -89,7 +92,7 @@ public:
 
     DurationDatatypeValidator(DatatypeValidator*            const baseValidator
                             , RefHashTableOf<KVStringPair>* const facets
-                            , RefVectorOf<XMLCh>*           const enums
+                            , RefArrayVectorOf<XMLCh>*           const enums
                             , const int                           finalSet);
 
     ~DurationDatatypeValidator();
@@ -102,7 +105,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp b/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp
index 7cbddd5b1..13218dc50 100644
--- a/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.4  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.3  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -109,7 +112,7 @@ ENTITYDatatypeValidator::ENTITYDatatypeValidator()
 ENTITYDatatypeValidator::ENTITYDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::ENTITY)
 ,fEntityDeclPool(0)
@@ -122,7 +125,7 @@ ENTITYDatatypeValidator::~ENTITYDatatypeValidator()
 
 DatatypeValidator* ENTITYDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new ENTITYDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp b/src/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp
index 150f15540..636fc3ffb 100644
--- a/src/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -109,7 +112,7 @@ public:
 
     ENTITYDatatypeValidator(DatatypeValidator*            const baseValidator
                           , RefHashTableOf<KVStringPair>* const facets
-                          , RefVectorOf<XMLCh>*           const enums
+                          , RefArrayVectorOf<XMLCh>*           const enums
                           , const int                           finalSet);
 
     virtual ~ENTITYDatatypeValidator();
@@ -156,7 +159,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 // -----------------------------------------------------------------------
diff --git a/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp b/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp
index 8c6109613..0956a7400 100644
--- a/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -105,7 +108,7 @@ FloatDatatypeValidator::FloatDatatypeValidator()
 FloatDatatypeValidator::FloatDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :AbstractNumericValidator(baseValidator, facets, finalSet, DatatypeValidator::Float)
 {
@@ -131,7 +134,7 @@ int FloatDatatypeValidator::compare(const XMLCh* const lValue
 
 DatatypeValidator* FloatDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new FloatDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/FloatDatatypeValidator.hpp b/src/xercesc/validators/datatype/FloatDatatypeValidator.hpp
index 0f58aa51e..28f58f6ff 100644
--- a/src/xercesc/validators/datatype/FloatDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/FloatDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -106,7 +109,7 @@ public:
 
     FloatDatatypeValidator(DatatypeValidator*            const baseValidator
                          , RefHashTableOf<KVStringPair>* const facets
-                         , RefVectorOf<XMLCh>*           const enums
+                         , RefArrayVectorOf<XMLCh>*           const enums
                          , const int                           finalSet);
 
     virtual ~FloatDatatypeValidator();
@@ -135,7 +138,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp b/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp
index 4a84544a3..c19ac5885 100644
--- a/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -124,7 +127,7 @@ HexBinaryDatatypeValidator::~HexBinaryDatatypeValidator()
 HexBinaryDatatypeValidator::HexBinaryDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::HexBinary)
 {
@@ -133,7 +136,7 @@ HexBinaryDatatypeValidator::HexBinaryDatatypeValidator(
 
 DatatypeValidator* HexBinaryDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new HexBinaryDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp b/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp
index e005fbbe2..723145580 100644
--- a/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -92,7 +95,7 @@ public:
 
     HexBinaryDatatypeValidator(DatatypeValidator*            const baseValidator
                              , RefHashTableOf<KVStringPair>* const facets
-                             , RefVectorOf<XMLCh>*           const enums
+                             , RefArrayVectorOf<XMLCh>*           const enums
                              , const int                           finalSet);
 
     virtual ~HexBinaryDatatypeValidator();
@@ -104,7 +107,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 
diff --git a/src/xercesc/validators/datatype/IDDatatypeValidator.cpp b/src/xercesc/validators/datatype/IDDatatypeValidator.cpp
index c6dde9ead..3298cec17 100644
--- a/src/xercesc/validators/datatype/IDDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/IDDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -104,7 +107,7 @@ IDDatatypeValidator::IDDatatypeValidator()
 IDDatatypeValidator::IDDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::ID)
 ,fIDRefList(0)
@@ -117,7 +120,7 @@ IDDatatypeValidator::~IDDatatypeValidator()
 
 DatatypeValidator* IDDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new IDDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/IDDatatypeValidator.hpp b/src/xercesc/validators/datatype/IDDatatypeValidator.hpp
index e013af469..bfe12c91e 100644
--- a/src/xercesc/validators/datatype/IDDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/IDDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -115,7 +118,7 @@ public:
 
     IDDatatypeValidator(DatatypeValidator*            const baseValidator
                       , RefHashTableOf<KVStringPair>* const facets
-                      , RefVectorOf<XMLCh>*           const enums
+                      , RefArrayVectorOf<XMLCh>*           const enums
                       , const int                           finalSet);
 
     virtual ~IDDatatypeValidator();
@@ -143,7 +146,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
     //@}
diff --git a/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp b/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp
index b9b4838be..df8e7544a 100644
--- a/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -102,7 +105,7 @@ IDREFDatatypeValidator::IDREFDatatypeValidator()
 IDREFDatatypeValidator::IDREFDatatypeValidator(
                                            DatatypeValidator*            const baseValidator
                                          , RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet)
 :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::IDREF)
 ,fIDRefList(0)
@@ -115,7 +118,7 @@ IDREFDatatypeValidator::~IDREFDatatypeValidator()
 
 DatatypeValidator* IDREFDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new IDREFDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/IDREFDatatypeValidator.hpp b/src/xercesc/validators/datatype/IDREFDatatypeValidator.hpp
index 18addb41f..8158cb224 100644
--- a/src/xercesc/validators/datatype/IDREFDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/IDREFDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -112,7 +115,7 @@ public:
 
     IDREFDatatypeValidator(DatatypeValidator*            const baseValidator
                          , RefHashTableOf<KVStringPair>* const facets
-                         , RefVectorOf<XMLCh>*           const enums
+                         , RefArrayVectorOf<XMLCh>*           const enums
                          , const int                           finalSet);
 
     virtual ~IDREFDatatypeValidator();
@@ -142,7 +145,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
     inline void setIDRefList(RefHashTableOf<XMLRefInfo>* fIDRefList);
diff --git a/src/xercesc/validators/datatype/ListDatatypeValidator.cpp b/src/xercesc/validators/datatype/ListDatatypeValidator.cpp
index 68cc883bc..7626142ab 100644
--- a/src/xercesc/validators/datatype/ListDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/ListDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.7  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.6  2002/12/16 22:28:25  knoaman
  * Make isAtomic inline.
  *
@@ -128,7 +131,7 @@ ListDatatypeValidator::ListDatatypeValidator()
 ListDatatypeValidator::ListDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::List)
 ,fContent(0)
@@ -151,7 +154,7 @@ ListDatatypeValidator::~ListDatatypeValidator()
 
 DatatypeValidator* ListDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new ListDatatypeValidator(this, facets, enums, finalSet);
@@ -162,10 +165,10 @@ int ListDatatypeValidator::compare(const XMLCh* const lValue
                                  , const XMLCh* const rValue)
 {
     DatatypeValidator* theItemTypeDTV = getItemTypeDTV();
-    RefVectorOf<XMLCh>* lVector = XMLString::tokenizeString(lValue);
-    Janitor<RefVectorOf<XMLCh> > janl(lVector);
-    RefVectorOf<XMLCh>* rVector = XMLString::tokenizeString(rValue);
-    Janitor<RefVectorOf<XMLCh> > janr(rVector);
+    BaseRefVectorOf<XMLCh>* lVector = XMLString::tokenizeString(lValue);
+    Janitor<BaseRefVectorOf<XMLCh> > janl(lVector);
+    BaseRefVectorOf<XMLCh>* rVector = XMLString::tokenizeString(rValue);
+    Janitor<BaseRefVectorOf<XMLCh> > janr(rVector);
 
     int lNumberOfTokens = lVector->size();
     int rNumberOfTokens = rVector->size();
@@ -190,23 +193,23 @@ int ListDatatypeValidator::compare(const XMLCh* const lValue
 void ListDatatypeValidator::validate( const XMLCh* const content)
 {
     setContent(content);
-    RefVectorOf<XMLCh>* tokenVector = XMLString::tokenizeString(content);
-    Janitor<RefVectorOf<XMLCh> > janName(tokenVector);
+    BaseRefVectorOf<XMLCh>* tokenVector = XMLString::tokenizeString(content);
+    Janitor<BaseRefVectorOf<XMLCh> > janName(tokenVector);
     checkContent(tokenVector, content, false);
 }
 
 void ListDatatypeValidator::checkContent( const XMLCh* const content, bool asBase)
 {
     setContent(content);
-    RefVectorOf<XMLCh>* tokenVector = XMLString::tokenizeString(content);
-    Janitor<RefVectorOf<XMLCh> > janName(tokenVector);
+    BaseRefVectorOf<XMLCh>* tokenVector = XMLString::tokenizeString(content);
+    Janitor<BaseRefVectorOf<XMLCh> > janName(tokenVector);
     checkContent(tokenVector, content, asBase);
 }
 
 //
 // here content is a list of items
 //
-void ListDatatypeValidator::checkContent( RefVectorOf<XMLCh>* tokenVector
+void ListDatatypeValidator::checkContent( BaseRefVectorOf<XMLCh>* tokenVector
                                         , const XMLCh* const content
                                         , bool asBase)
 {
@@ -324,12 +327,12 @@ void ListDatatypeValidator::checkContent( RefVectorOf<XMLCh>* tokenVector
 
 }
 
-bool ListDatatypeValidator::valueSpaceCheck(RefVectorOf<XMLCh>* tokenVector
+bool ListDatatypeValidator::valueSpaceCheck(BaseRefVectorOf<XMLCh>* tokenVector
                                           , const XMLCh* const  enumStr) const
 {
     DatatypeValidator* theItemTypeDTV = getItemTypeDTV();
-    RefVectorOf<XMLCh>* enumVector = XMLString::tokenizeString(enumStr);
-    Janitor<RefVectorOf<XMLCh> > janName(enumVector);
+    BaseRefVectorOf<XMLCh>* enumVector = XMLString::tokenizeString(enumStr);
+    Janitor<BaseRefVectorOf<XMLCh> > janName(enumVector);
 
     if (tokenVector->size() != enumVector->size())
         return false;
@@ -378,8 +381,8 @@ void ListDatatypeValidator::checkValueSpace(const XMLCh* const content)
 
 int ListDatatypeValidator::getLength(const XMLCh* const content) const
 {
-    RefVectorOf<XMLCh>* tokenVector = XMLString::tokenizeString(content);
-    Janitor<RefVectorOf<XMLCh> > janName(tokenVector);
+    BaseRefVectorOf<XMLCh>* tokenVector = XMLString::tokenizeString(content);
+    Janitor<BaseRefVectorOf<XMLCh> > janName(tokenVector);
 
     return tokenVector->size();
 }
@@ -409,7 +412,7 @@ void ListDatatypeValidator::inspectFacetBase()
                 for ( i = 0; i < enumLength; i++)
                 {
                     // ask the itemType for a complete check
-                    RefVectorOf<XMLCh>* tempList = XMLString::tokenizeString(getEnumeration()->elementAt(i));
+                    BaseRefVectorOf<XMLCh>* tempList = XMLString::tokenizeString(getEnumeration()->elementAt(i));
                     int tokenNumber = tempList->size();
 
                     try
diff --git a/src/xercesc/validators/datatype/ListDatatypeValidator.hpp b/src/xercesc/validators/datatype/ListDatatypeValidator.hpp
index a9de5af1d..9212ea3b5 100644
--- a/src/xercesc/validators/datatype/ListDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/ListDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.5  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.4  2002/12/16 22:28:25  knoaman
  * Make isAtomic inline.
  *
@@ -126,7 +129,7 @@ public:
 
     ListDatatypeValidator(DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet);
 
     virtual ~ListDatatypeValidator();
@@ -181,7 +184,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
     DatatypeValidator* getItemTypeDTV() const;
@@ -216,11 +219,11 @@ protected:
 
 private:
 
-    void checkContent(RefVectorOf<XMLCh>* tokenVector
+    void checkContent(BaseRefVectorOf<XMLCh>* tokenVector
                     , const XMLCh* const  content
                     , bool asBase);
 
-    bool valueSpaceCheck(RefVectorOf<XMLCh>* tokenVector
+    bool valueSpaceCheck(BaseRefVectorOf<XMLCh>* tokenVector
                        , const XMLCh* const  enumStr) const;
 
 // -----------------------------------------------------------------------
diff --git a/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp b/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp
index d1275bcf2..6bd54a415 100644
--- a/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -91,7 +94,7 @@ MonthDatatypeValidator::MonthDatatypeValidator()
 MonthDatatypeValidator::MonthDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Month)
 {
@@ -103,7 +106,7 @@ MonthDatatypeValidator::~MonthDatatypeValidator()
 
 DatatypeValidator* MonthDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new MonthDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/MonthDatatypeValidator.hpp b/src/xercesc/validators/datatype/MonthDatatypeValidator.hpp
index 1f719b7f7..a70f25a55 100644
--- a/src/xercesc/validators/datatype/MonthDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/MonthDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -89,7 +92,7 @@ public:
 
     MonthDatatypeValidator(DatatypeValidator*            const baseValidator
                          , RefHashTableOf<KVStringPair>* const facets
-                         , RefVectorOf<XMLCh>*           const enums
+                         , RefArrayVectorOf<XMLCh>*           const enums
                          , const int                           finalSet);
 
     ~MonthDatatypeValidator();
@@ -102,7 +105,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp b/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp
index 21fd9c762..ba5ca7fc3 100644
--- a/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -91,7 +94,7 @@ MonthDayDatatypeValidator::MonthDayDatatypeValidator()
 MonthDayDatatypeValidator::MonthDayDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::MonthDay)
 {
@@ -103,7 +106,7 @@ MonthDayDatatypeValidator::~MonthDayDatatypeValidator()
 
 DatatypeValidator* MonthDayDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new MonthDayDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp b/src/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp
index cde8fe194..3dd63fce5 100644
--- a/src/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -89,7 +92,7 @@ public:
 
     MonthDayDatatypeValidator(DatatypeValidator*            const baseValidator
                             , RefHashTableOf<KVStringPair>* const facets
-                            , RefVectorOf<XMLCh>*           const enums
+                            , RefArrayVectorOf<XMLCh>*           const enums
                             , const int                           finalSet);
 
     ~MonthDayDatatypeValidator();
@@ -102,7 +105,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/NCNameDatatypeValidator.cpp b/src/xercesc/validators/datatype/NCNameDatatypeValidator.cpp
index b2064e851..80ab8b26d 100644
--- a/src/xercesc/validators/datatype/NCNameDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/NCNameDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.4  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.3  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -98,7 +101,7 @@ NCNameDatatypeValidator::~NCNameDatatypeValidator()
 NCNameDatatypeValidator::NCNameDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::NCName)
 {
@@ -107,7 +110,7 @@ NCNameDatatypeValidator::NCNameDatatypeValidator(
 
 DatatypeValidator* NCNameDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new NCNameDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/NCNameDatatypeValidator.hpp b/src/xercesc/validators/datatype/NCNameDatatypeValidator.hpp
index e43da32dc..d09902bbf 100644
--- a/src/xercesc/validators/datatype/NCNameDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/NCNameDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -95,7 +98,7 @@ public:
 
     NCNameDatatypeValidator(DatatypeValidator*            const baseValidator
                           , RefHashTableOf<KVStringPair>* const facets
-                          , RefVectorOf<XMLCh>*           const enums
+                          , RefArrayVectorOf<XMLCh>*           const enums
                           , const int                           finalSet);
 
     virtual ~NCNameDatatypeValidator();
@@ -142,7 +145,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp b/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp
index 1937960c5..16215452d 100644
--- a/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -116,7 +119,7 @@ NOTATIONDatatypeValidator::~NOTATIONDatatypeValidator()
 NOTATIONDatatypeValidator::NOTATIONDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::NOTATION)
 {
@@ -125,7 +128,7 @@ NOTATIONDatatypeValidator::NOTATIONDatatypeValidator(
 
 DatatypeValidator* NOTATIONDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new NOTATIONDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp b/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp
index 4233d3bc7..cfd98ab74 100644
--- a/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -103,7 +106,7 @@ public:
 
     NOTATIONDatatypeValidator(DatatypeValidator*            const baseValidator
                             , RefHashTableOf<KVStringPair>* const facets
-                            , RefVectorOf<XMLCh>*           const enums
+                            , RefArrayVectorOf<XMLCh>*           const enums
                             , const int                           finalSet);
 
     virtual ~NOTATIONDatatypeValidator();
@@ -115,7 +118,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/NameDatatypeValidator.cpp b/src/xercesc/validators/datatype/NameDatatypeValidator.cpp
index 4e3613f8f..18f85b97d 100644
--- a/src/xercesc/validators/datatype/NameDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/NameDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.4  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.3  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -101,7 +104,7 @@ NameDatatypeValidator::~NameDatatypeValidator()
 NameDatatypeValidator::NameDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::Name)
 {
@@ -110,7 +113,7 @@ NameDatatypeValidator::NameDatatypeValidator(
 
 DatatypeValidator* NameDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new NameDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/NameDatatypeValidator.hpp b/src/xercesc/validators/datatype/NameDatatypeValidator.hpp
index 32a80bdce..f98fb90b2 100644
--- a/src/xercesc/validators/datatype/NameDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/NameDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -95,7 +98,7 @@ public:
 
     NameDatatypeValidator(DatatypeValidator*            const baseValidator
                           , RefHashTableOf<KVStringPair>* const facets
-                          , RefVectorOf<XMLCh>*           const enums
+                          , RefArrayVectorOf<XMLCh>*           const enums
                           , const int                           finalSet);
 
     virtual ~NameDatatypeValidator();
@@ -142,7 +145,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp b/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
index e975e5ebe..604a61986 100644
--- a/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -112,7 +115,7 @@ QNameDatatypeValidator::~QNameDatatypeValidator()
 QNameDatatypeValidator::QNameDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::QName)
 {
@@ -121,7 +124,7 @@ QNameDatatypeValidator::QNameDatatypeValidator(
 
 DatatypeValidator* QNameDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new QNameDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/QNameDatatypeValidator.hpp b/src/xercesc/validators/datatype/QNameDatatypeValidator.hpp
index 7a1270139..a3999606d 100644
--- a/src/xercesc/validators/datatype/QNameDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/QNameDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -103,7 +106,7 @@ public:
 
     QNameDatatypeValidator(DatatypeValidator*            const baseValidator
                          , RefHashTableOf<KVStringPair>* const facets
-                         , RefVectorOf<XMLCh>*           const enums
+                         , RefArrayVectorOf<XMLCh>*           const enums
                          , const int                           finalSet);
 
     virtual ~QNameDatatypeValidator();
@@ -115,7 +118,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 protected:
 
diff --git a/src/xercesc/validators/datatype/StringDatatypeValidator.cpp b/src/xercesc/validators/datatype/StringDatatypeValidator.cpp
index 931a64a67..202fac889 100644
--- a/src/xercesc/validators/datatype/StringDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/StringDatatypeValidator.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.4  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.3  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -141,7 +144,7 @@ StringDatatypeValidator::StringDatatypeValidator()
 StringDatatypeValidator::StringDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::String)
 ,fWhiteSpace(DatatypeValidator::PRESERVE)
@@ -154,7 +157,7 @@ StringDatatypeValidator::~StringDatatypeValidator()
 
 DatatypeValidator* StringDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new StringDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/StringDatatypeValidator.hpp b/src/xercesc/validators/datatype/StringDatatypeValidator.hpp
index 037aa95b7..8f5f22e7e 100644
--- a/src/xercesc/validators/datatype/StringDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/StringDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -101,7 +104,7 @@ public:
 
     StringDatatypeValidator(DatatypeValidator*            const baseValidator
                           , RefHashTableOf<KVStringPair>* const facets
-                          , RefVectorOf<XMLCh>*           const enums
+                          , RefArrayVectorOf<XMLCh>*           const enums
                           , const int                           finalSet);
 
     virtual ~StringDatatypeValidator();
@@ -123,7 +126,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp b/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp
index ceb2a939b..24eb435d6 100644
--- a/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -91,7 +94,7 @@ TimeDatatypeValidator::TimeDatatypeValidator()
 TimeDatatypeValidator::TimeDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Time)
 {
@@ -103,7 +106,7 @@ TimeDatatypeValidator::~TimeDatatypeValidator()
 
 DatatypeValidator* TimeDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new TimeDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/TimeDatatypeValidator.hpp b/src/xercesc/validators/datatype/TimeDatatypeValidator.hpp
index f6824cd0d..fed032697 100644
--- a/src/xercesc/validators/datatype/TimeDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/TimeDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -90,7 +93,7 @@ public:
 
     TimeDatatypeValidator(DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet);
 
     ~TimeDatatypeValidator();
@@ -103,7 +106,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp b/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
index aa21385a1..a91232853 100644
--- a/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.6  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.5  2002/12/06 16:45:54  tng
  * header include cleanup.
  *
@@ -139,7 +142,7 @@ UnionDatatypeValidator::UnionDatatypeValidator(
 UnionDatatypeValidator::UnionDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::Union)
 ,fEnumerationInherited(false)
@@ -178,7 +181,7 @@ UnionDatatypeValidator::UnionDatatypeValidator(
 
 void UnionDatatypeValidator::init(DatatypeValidator*            const baseValidator
                                 , RefHashTableOf<KVStringPair>* const facets
-                                , RefVectorOf<XMLCh>*           const enums)
+                                , RefArrayVectorOf<XMLCh>*           const enums)
 {
     if (enums)
         setEnumeration(enums, false);
@@ -352,7 +355,7 @@ void UnionDatatypeValidator::checkContent(const XMLCh* const content, bool asBas
         // any of the member types, it is considerd valid.
         //
         RefVectorOf<DatatypeValidator>* memberDTV = getMemberTypeValidators();
-        RefVectorOf<XMLCh>* tmpEnum = getEnumeration();
+        RefArrayVectorOf<XMLCh>* tmpEnum = getEnumeration();
         unsigned int memberTypeNumber = memberDTV->size();
         unsigned int enumLength = tmpEnum->size();
 
@@ -398,7 +401,7 @@ int UnionDatatypeValidator::compare(const XMLCh* const lValue
     return -1;
 }
 
-const RefVectorOf<XMLCh>* UnionDatatypeValidator::getEnumString() const
+const RefArrayVectorOf<XMLCh>* UnionDatatypeValidator::getEnumString() const
 {
 	return getEnumeration();
 }
diff --git a/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp b/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp
index 6ae2ef502..98ec94260 100644
--- a/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.4  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.3  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -133,14 +136,14 @@ public:
     //
     UnionDatatypeValidator(DatatypeValidator*            const baseValidator
                          , RefHashTableOf<KVStringPair>* const facets
-                         , RefVectorOf<XMLCh>*           const enums
+                         , RefArrayVectorOf<XMLCh>*           const enums
                          , const int                           finalSet);
 
     virtual ~UnionDatatypeValidator();
 
 	//@}
 
-	virtual const RefVectorOf<XMLCh>* getEnumString() const;
+	virtual const RefArrayVectorOf<XMLCh>* getEnumString() const;
 
     // -----------------------------------------------------------------------
     // Getter methods
@@ -205,7 +208,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                 , RefVectorOf<XMLCh>*           const enums
+                                 , RefArrayVectorOf<XMLCh>*           const enums
                                  , const int                           finalSet);
 
     RefVectorOf<DatatypeValidator>* getMemberTypeValidators() const;
@@ -216,13 +219,13 @@ private:
 
     void init(DatatypeValidator*            const baseValidator
             , RefHashTableOf<KVStringPair>* const facets
-            , RefVectorOf<XMLCh>*           const enums);
+            , RefArrayVectorOf<XMLCh>*           const enums);
 
     void cleanUp();
 
-    RefVectorOf<XMLCh>*  getEnumeration() const;
+    RefArrayVectorOf<XMLCh>*  getEnumeration() const;
 
-    void                 setEnumeration(RefVectorOf<XMLCh>*, bool);
+    void                 setEnumeration(RefArrayVectorOf<XMLCh>*, bool);
 
 
     // -----------------------------------------------------------------------
@@ -236,13 +239,13 @@ private:
     //
     // -----------------------------------------------------------------------
      bool                 fEnumerationInherited;
-     RefVectorOf<XMLCh>*  fEnumeration;
+     RefArrayVectorOf<XMLCh>*  fEnumeration;
      RefVectorOf<DatatypeValidator>*  fMemberTypeValidators;
 };
 
 inline DatatypeValidator* UnionDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new UnionDatatypeValidator(this, facets, enums, finalSet);
@@ -263,12 +266,12 @@ inline void UnionDatatypeValidator::cleanUp()
         delete fMemberTypeValidators;
 }
 
-inline RefVectorOf<XMLCh>* UnionDatatypeValidator:: getEnumeration() const
+inline RefArrayVectorOf<XMLCh>* UnionDatatypeValidator:: getEnumeration() const
 {
     return fEnumeration;
 }
 
-inline void UnionDatatypeValidator::setEnumeration(RefVectorOf<XMLCh>* enums
+inline void UnionDatatypeValidator::setEnumeration(RefArrayVectorOf<XMLCh>* enums
                                                  , bool                inherited)
 {
     if (enums)
diff --git a/src/xercesc/validators/datatype/YearDatatypeValidator.cpp b/src/xercesc/validators/datatype/YearDatatypeValidator.cpp
index 5c903a385..92e589b9b 100644
--- a/src/xercesc/validators/datatype/YearDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/YearDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -91,7 +94,7 @@ YearDatatypeValidator::YearDatatypeValidator()
 YearDatatypeValidator::YearDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Year)
 {
@@ -103,7 +106,7 @@ YearDatatypeValidator::~YearDatatypeValidator()
 
 DatatypeValidator* YearDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new YearDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/YearDatatypeValidator.hpp b/src/xercesc/validators/datatype/YearDatatypeValidator.hpp
index cc428fa7b..5d94c0808 100644
--- a/src/xercesc/validators/datatype/YearDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/YearDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -89,7 +92,7 @@ public:
 
     YearDatatypeValidator(DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet);
 
     ~YearDatatypeValidator();
@@ -102,7 +105,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp b/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp
index 82889acf9..90a3fb271 100644
--- a/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -91,7 +94,7 @@ YearMonthDatatypeValidator::YearMonthDatatypeValidator()
 YearMonthDatatypeValidator::YearMonthDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
-                        , RefVectorOf<XMLCh>*           const enums
+                        , RefArrayVectorOf<XMLCh>*           const enums
                         , const int                           finalSet)
 :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::YearMonth)
 {
@@ -103,7 +106,7 @@ YearMonthDatatypeValidator::~YearMonthDatatypeValidator()
 
 DatatypeValidator* YearMonthDatatypeValidator::newInstance(
                                       RefHashTableOf<KVStringPair>* const facets
-                                    , RefVectorOf<XMLCh>*           const enums
+                                    , RefArrayVectorOf<XMLCh>*           const enums
                                     , const int                           finalSet)
 {
     return (DatatypeValidator*) new YearMonthDatatypeValidator(this, facets, enums, finalSet);
diff --git a/src/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp b/src/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp
index 9cf9608da..39e0939bb 100644
--- a/src/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:55  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:53:28  tng
  * C++ Namespace Support.
  *
@@ -89,7 +92,7 @@ public:
 
     YearMonthDatatypeValidator(DatatypeValidator*            const baseValidator
                              , RefHashTableOf<KVStringPair>* const facets
-                             , RefVectorOf<XMLCh>*           const enums
+                             , RefArrayVectorOf<XMLCh>*           const enums
                              , const int                           finalSet);
 
     ~YearMonthDatatypeValidator();
@@ -102,7 +105,7 @@ public:
 	  * Used by the DatatypeValidatorFactory.
       */
     virtual DatatypeValidator* newInstance(RefHashTableOf<KVStringPair>* const facets
-                                         , RefVectorOf<XMLCh>*           const enums
+                                         , RefArrayVectorOf<XMLCh>*           const enums
                                          , const int                           finalSet);
 
 protected:
diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp
index 23bcc02dc..31ce97cc1 100644
--- a/src/xercesc/validators/schema/TraverseSchema.cpp
+++ b/src/xercesc/validators/schema/TraverseSchema.cpp
@@ -1661,7 +1661,7 @@ TraverseSchema::traverseAny(const DOMElement* const elem) {
     }
     else {
 
-        RefVectorOf<XMLCh>* nameSpaceTokens = XMLString::tokenizeString(nameSpace);
+        BaseRefVectorOf<XMLCh>* nameSpaceTokens = XMLString::tokenizeString(nameSpace);
         ValueVectorOf<unsigned int> uriList(8);
         ContentSpecNode* firstNode = 0;
         ContentSpecNode* secondNode = 0;
@@ -2861,7 +2861,7 @@ TraverseSchema::traverseByRestriction(const DOMElement* const rootElem,
 
         // Get facets if any existing
         RefHashTableOf<KVStringPair>* facets = 0;
-        RefVectorOf<XMLCh>*           enums = 0;
+        RefArrayVectorOf<XMLCh>*      enums = 0;
         XMLBuffer                     pattern(128);
         XMLCh                         fixedFlagStr[16];
         unsigned int                  fixedFlag = 0;
@@ -2898,7 +2898,7 @@ TraverseSchema::traverseByRestriction(const DOMElement* const rootElem,
                     // to get the qualified name first before adding it to the
                     // enum buffer
                     if (!enums) {
-                        enums = new RefVectorOf<XMLCh>(8, true);
+                        enums = new RefArrayVectorOf<XMLCh>(8, true);
                     }
 
                     if (baseValidator->getType() == DatatypeValidator::NOTATION) {
@@ -3301,7 +3301,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName,
             // Build up the facet info
             // ---------------------------------------------------------------
             RefHashTableOf<KVStringPair>*  facets = 0;
-            RefVectorOf<XMLCh>*            enums = 0;
+            RefArrayVectorOf<XMLCh>*       enums = 0;
             XMLBuffer                      pattern(128);
             XMLCh                          fixedFlagStr[16];
             unsigned int                   fixedFlag = 0;
@@ -3333,7 +3333,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName,
                     if (XMLString::equals(facetName, SchemaSymbols::fgELT_ENUMERATION)) {
 
                         if (!enums) {
-                            enums = new RefVectorOf<XMLCh>(8, true);
+                            enums = new RefArrayVectorOf<XMLCh>(8, true);
                         }
 
                         enums->addElement(XMLString::replicate(attValue));
diff --git a/src/xercesc/validators/schema/identity/FieldValueMap.cpp b/src/xercesc/validators/schema/identity/FieldValueMap.cpp
index e85a2c14b..2b99c9cf7 100644
--- a/src/xercesc/validators/schema/identity/FieldValueMap.cpp
+++ b/src/xercesc/validators/schema/identity/FieldValueMap.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.3  2002/12/18 14:17:59  gareth
+ * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
+ *
  * Revision 1.2  2002/11/04 14:47:41  tng
  * C++ Namespace Support.
  *
@@ -96,7 +99,7 @@ FieldValueMap::FieldValueMap(const FieldValueMap& other)
 
             fFields = new ValueVectorOf<IC_Field*>(*(other.fFields));
             fValidators = new ValueVectorOf<DatatypeValidator*>(*(other.fValidators));
-            fValues = new RefVectorOf<XMLCh>(other.fFields->curCapacity());
+            fValues = new RefArrayVectorOf<XMLCh>(other.fFields->curCapacity());
 
             for (unsigned int i=0; i<valuesSize; i++) {
                 fValues->addElement(XMLString::replicate(other.fValues->elementAt(i)));
diff --git a/src/xercesc/validators/schema/identity/FieldValueMap.hpp b/src/xercesc/validators/schema/identity/FieldValueMap.hpp
index 30eddf2b4..0ee9fd1f5 100644
--- a/src/xercesc/validators/schema/identity/FieldValueMap.hpp
+++ b/src/xercesc/validators/schema/identity/FieldValueMap.hpp
@@ -71,6 +71,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/ValueVectorOf.hpp>
+#include <xercesc/util/RefArrayVectorOf.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
 
@@ -123,7 +124,7 @@ private:
     // -----------------------------------------------------------------------
     ValueVectorOf<IC_Field*>*          fFields;
     ValueVectorOf<DatatypeValidator*>* fValidators;
-    RefVectorOf<XMLCh>*                fValues;
+    RefArrayVectorOf<XMLCh>*           fValues;
 };
 
 
@@ -199,7 +200,7 @@ inline void FieldValueMap::put(IC_Field* const key,
     if (!fFields) {
         fFields = new ValueVectorOf<IC_Field*>(4);
         fValidators = new ValueVectorOf<DatatypeValidator*>(4);
-        fValues = new RefVectorOf<XMLCh>(4);
+        fValues = new RefArrayVectorOf<XMLCh>(4);
     }
 
     int keyIndex = indexOf(key);
diff --git a/src/xercesc/validators/schema/identity/ValueStore.hpp b/src/xercesc/validators/schema/identity/ValueStore.hpp
index 7ae03911f..4f533339c 100644
--- a/src/xercesc/validators/schema/identity/ValueStore.hpp
+++ b/src/xercesc/validators/schema/identity/ValueStore.hpp
@@ -71,6 +71,7 @@
 //  Includes
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/identity/FieldValueMap.hpp>
+#include <xercesc/util/RefVectorOf.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
 
-- 
GitLab