diff --git a/content/xul/templates/src/nsXULContentBuilder.cpp b/content/xul/templates/src/nsXULContentBuilder.cpp index 12b6a0a4756..bad7af41814 100644 --- a/content/xul/templates/src/nsXULContentBuilder.cpp +++ b/content/xul/templates/src/nsXULContentBuilder.cpp @@ -1360,7 +1360,7 @@ nsXULContentBuilder::CreateTemplateContents(nsIContent* aElement, nsCOMPtr resource; nsCOMPtr element = aElement; - while (1) { + while (element) { nsXULContentUtils::GetElementRefResource(element, getter_AddRefs(resource)); if (resource) break; @@ -1369,15 +1369,18 @@ nsXULContentBuilder::CreateTemplateContents(nsIContent* aElement, element->GetParent(*getter_AddRefs(parent)); element = parent; - - NS_ASSERTION(element != nsnull, - "walked to the root of the content model without finding template root"); } + NS_ASSERTION(element != nsnull, "walked off the top of the content tree"); + if (! element) + return NS_ERROR_FAILURE; + nsTemplateMatch* match = nsnull; mContentSupportMap.Get(element, &match); NS_ASSERTION(match != nsnull, "no match in the content support map"); + if (! match) + return NS_ERROR_FAILURE; rv = BuildContentFromTemplate(aTemplateElement, aElement, aElement, PR_FALSE, resource, PR_FALSE, match, aContainer, aNewIndexInContainer);