From 9070803570b0cc82fe109818ddc75bcf06837884 Mon Sep 17 00:00:00 2001 From: "peterv%propagandism.org" Date: Sun, 25 Apr 2004 10:24:51 +0000 Subject: [PATCH] Fix schema code bustage () from fix for bug 241201 --- extensions/webservices/schema/src/nsSchema.cpp | 18 ++++++++++++++++++ .../webservices/schema/src/nsSchemaLoader.cpp | 12 ++++++++++++ .../webservices/schema/src/nsSchemaPrivate.h | 14 +++++++++++++- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/extensions/webservices/schema/src/nsSchema.cpp b/extensions/webservices/schema/src/nsSchema.cpp index 017d1bf3f3c9..f7e78e4476ce 100644 --- a/extensions/webservices/schema/src/nsSchema.cpp +++ b/extensions/webservices/schema/src/nsSchema.cpp @@ -75,6 +75,24 @@ nsSchema::~nsSchema() NS_IMPL_ISUPPORTS2_CI(nsSchema, nsISchema, nsISchemaComponent) +nsresult +nsSchema::Init() +{ + nsresult rv = mTypesHash.Init(); + NS_ENSURE_SUCCESS(rv, rv); + + rv = mAttributesHash.Init(); + NS_ENSURE_SUCCESS(rv, rv); + + rv = mElementsHash.Init(); + NS_ENSURE_SUCCESS(rv, rv); + + rv = mAttributeGroupsHash.Init(); + NS_ENSURE_SUCCESS(rv, rv); + + return mModelGroupsHash.Init(); +} + /* readonly attribute wstring targetNamespace; */ NS_IMETHODIMP nsSchema::GetTargetNamespace(nsAString& aTargetNamespace) diff --git a/extensions/webservices/schema/src/nsSchemaLoader.cpp b/extensions/webservices/schema/src/nsSchemaLoader.cpp index 78f9a63fd603..2846b8bd396f 100644 --- a/extensions/webservices/schema/src/nsSchemaLoader.cpp +++ b/extensions/webservices/schema/src/nsSchemaLoader.cpp @@ -990,6 +990,9 @@ nsSchemaLoader::ProcessSchemaElement(nsIDOMElement* aElement, return NS_ERROR_OUT_OF_MEMORY; } + rv = schemaInst->Init(); + NS_ENSURE_SUCCESS(rv, rv); + nsChildElementIterator iterator(aElement, kSchemaNamespaces, kSchemaNamespacesLength); nsCOMPtr childElement; @@ -1355,6 +1358,9 @@ nsSchemaLoader::ProcessComplexType(nsSchema* aSchema, } complexType = typeInst; + rv = typeInst->Init(); + NS_ENSURE_SUCCESS(rv, rv); + nsChildElementIterator iterator(aElement, kSchemaNamespaces, kSchemaNamespacesLength); @@ -1478,6 +1484,9 @@ nsSchemaLoader::ParseDimensions(nsSchema* aSchema, } nsCOMPtr complexType = typeInst; + rv = typeInst->Init(); + NS_ENSURE_SUCCESS(rv, rv); + nsCOMPtr soapArray; rv = GetType(NS_LITERAL_STRING("Array"), NS_LITERAL_STRING(NS_SOAP_1_2_ENCODING_NAMESPACE), @@ -2693,6 +2702,9 @@ nsSchemaLoader::ProcessAttributeGroup(nsSchema* aSchema, } attributeGroup = attrInst; + rv = attrInst->Init(); + NS_ENSURE_SUCCESS(rv, rv); + nsChildElementIterator iterator(aElement, kSchemaNamespaces, kSchemaNamespacesLength); diff --git a/extensions/webservices/schema/src/nsSchemaPrivate.h b/extensions/webservices/schema/src/nsSchemaPrivate.h index 257ac7856791..0ed83e72e8d8 100644 --- a/extensions/webservices/schema/src/nsSchemaPrivate.h +++ b/extensions/webservices/schema/src/nsSchemaPrivate.h @@ -67,6 +67,8 @@ public: NS_DECL_NSISCHEMACOMPONENT NS_DECL_NSISCHEMA + nsresult Init(); + NS_IMETHOD AddType(nsISchemaType* aType); NS_IMETHOD AddAttribute(nsISchemaAttribute* aAttribute); NS_IMETHOD AddElement(nsISchemaElement* aElement); @@ -220,6 +222,11 @@ public: NS_DECL_NSISCHEMATYPE NS_DECL_NSISCHEMACOMPLEXTYPE + nsresult Init() + { + return mAttributesHash.Init(); + } + NS_IMETHOD SetContentModel(PRUint16 aContentModel); NS_IMETHOD SetDerivation(PRUint16 aDerivation, nsISchemaType* aBaseType); NS_IMETHOD SetSimpleBaseType(nsISchemaSimpleType* aSimpleBaseType); @@ -457,7 +464,12 @@ public: NS_IMPL_NSISCHEMACOMPONENT_USING_BASE NS_DECL_NSISCHEMAATTRIBUTECOMPONENT NS_DECL_NSISCHEMAATTRIBUTEGROUP - + + nsresult Init() + { + return mAttributesHash.Init(); + } + NS_IMETHOD AddAttribute(nsISchemaAttributeComponent* aAttribute); protected: