From b7e5034597f7a2bd5259983786a6194a56ff7ab5 Mon Sep 17 00:00:00 2001 From: "timeless%mozdev.org" Date: Thu, 6 Nov 2003 23:10:45 +0000 Subject: [PATCH] Bug 224901 oom crash in MakeContentObject for form controls r=dbaron sr=dbaron git-svn-id: svn://10.0.0.236/trunk@148932 18797224-902f-48f8-a5cc-f745e15eee43 --- .../html/document/src/nsHTMLContentSink.cpp | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp index 3c4017a1439..043c13e91fb 100644 --- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp @@ -862,7 +862,7 @@ static void SetForm(nsIHTMLContent* aContent, nsIDOMHTMLFormElement* aForm) { nsCOMPtr formControl(do_QueryInterface(aContent)); - NS_ASSERTION(formControl, "nsIDOMHTMLFormElement doesnt implement nsIFormControl?"); + NS_ASSERTION(formControl, "nsIDOMHTMLFormElement doesn't implement nsIFormControl?"); formControl->SetForm(aForm); } @@ -1090,7 +1090,7 @@ MakeContentObject(nsHTMLTag aNodeType, nsINodeInfo *aNodeInfo, // table if (aNodeType == eHTMLTag_input) { rv = NS_NewHTMLInputElement(aResult, aNodeInfo, aFromParser); - if (!aInsideNoXXXTag) { + if (NS_SUCCEEDED(rv) && !aInsideNoXXXTag) { SetForm(*aResult, aForm); } return rv; @@ -1098,7 +1098,7 @@ MakeContentObject(nsHTMLTag aNodeType, nsINodeInfo *aNodeInfo, if (aNodeType == eHTMLTag_select) { rv = NS_NewHTMLSelectElement(aResult, aNodeInfo, aFromParser); - if (!aInsideNoXXXTag) { + if (NS_SUCCEEDED(rv) && !aInsideNoXXXTag) { SetForm(*aResult, aForm); } return rv; @@ -1106,15 +1106,18 @@ MakeContentObject(nsHTMLTag aNodeType, nsINodeInfo *aNodeInfo, rv = sContentCreatorCallbacks[aNodeType](aResult, aNodeInfo); - switch (aNodeType) { - case eHTMLTag_button: - case eHTMLTag_fieldset: - case eHTMLTag_label: - case eHTMLTag_legend: - case eHTMLTag_object: - case eHTMLTag_textarea: - if (!aInsideNoXXXTag) { + if (NS_SUCCEEDED(rv) && !aInsideNoXXXTag) { + switch (aNodeType) { + case eHTMLTag_button: + case eHTMLTag_fieldset: + case eHTMLTag_label: + case eHTMLTag_legend: + case eHTMLTag_object: + case eHTMLTag_textarea: SetForm(*aResult, aForm); + break; + default: + break; } }