From 4079fb39333352cb752a23b41adfcce18331256d Mon Sep 17 00:00:00 2001
From: Khaled Noaman <knoaman@apache.org>
Date: Tue, 6 Jan 2004 19:07:16 +0000
Subject: [PATCH] Fix segfault when adding S4S

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@175653 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/framework/psvi/XSModel.cpp | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/xercesc/framework/psvi/XSModel.cpp b/src/xercesc/framework/psvi/XSModel.cpp
index 1289541c7..5ef000272 100644
--- a/src/xercesc/framework/psvi/XSModel.cpp
+++ b/src/xercesc/framework/psvi/XSModel.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.18  2004/01/06 19:07:16  knoaman
+ * Fix segfault when adding S4S
+ *
  * Revision 1.17  2003/12/30 21:35:46  neilg
  * even if there are no grammars to add to an XSModel, the S4S grammar must be included
  *
@@ -233,11 +236,13 @@ XSModel::XSModel( XMLGrammarPool *grammarPool
         (void*) SchemaSymbols::fgURI_SCHEMAFORSCHEMA
         , namespaceItem
     );
-    fDeleteNamespace->addElement(namespaceItem);
+
+    DatatypeValidatorFactory dvFactory(manager);
+    dvFactory.expandRegistryToFullSchemaSet();
     addS4SToXSModel
     (
         getNamespaceItem(SchemaSymbols::fgURI_SCHEMAFORSCHEMA)
-        , namespaceItem->fGrammar->getDatatypeRegistry()->getBuiltInRegistry()
+        , dvFactory.getBuiltInRegistry()
     );
 
     unsigned int numberOfNamespaces = fXSNamespaceItemList->size();
@@ -388,6 +393,9 @@ XSModel::XSModel( XSModel *baseModel
     // Add S4S namespace if needed
     if (!fAddedS4SGrammar)
     {
+        DatatypeValidatorFactory dvFactory(manager);
+        dvFactory.expandRegistryToFullSchemaSet();
+
         XSNamespaceItem* namespaceItem = new (manager) XSNamespaceItem
         (
             this, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, manager
@@ -406,7 +414,7 @@ XSModel::XSModel( XSModel *baseModel
         addS4SToXSModel
         (
             getNamespaceItem(SchemaSymbols::fgURI_SCHEMAFORSCHEMA)
-            , namespaceItem->fGrammar->getDatatypeRegistry()->getBuiltInRegistry()
+            , dvFactory.getBuiltInRegistry()
         );
     }
 
-- 
GitLab