nsresult txUnknownHandler::startElement(nsIAtom* aPrefix, const nsSubstring& aLocalName, const int32_t aNsID) { if (!mFlushed) { // Make sure that mEs->mResultHandler == this is true, otherwise we'll // leak mEs->mResultHandler in createHandlerAndFlush. NS_ASSERTION(mEs->mResultHandler == this, "We're leaking mEs->mResultHandler."); bool htmlRoot = aNsID == kNameSpaceID_None && !aPrefix && aLocalName.Equals(NS_LITERAL_STRING("html"), txCaseInsensitiveStringComparator()); nsresult rv = createHandlerAndFlush(htmlRoot, aLocalName, aNsID); NS_ENSURE_SUCCESS(rv, rv); } return mEs->mResultHandler->startElement(aPrefix, aLocalName, aNsID); }
nsresult txUnknownHandler::startElement(nsIAtom* aPrefix, const nsSubstring& aLocalName, const PRInt32 aNsID) { // Make sure that mEs->mResultHandler == this is true, otherwise we'll // leak mEs->mResultHandler in createHandlerAndFlush and we may crash // later on trying to delete this handler again. NS_ASSERTION(mEs->mResultHandler == this, "We're leaking mEs->mResultHandler."); PRBool htmlRoot = aNsID == kNameSpaceID_None && !aPrefix && aLocalName.Equals(NS_LITERAL_STRING("html"), txCaseInsensitiveStringComparator()); nsresult rv = createHandlerAndFlush(htmlRoot, aLocalName, aNsID); NS_ENSURE_SUCCESS(rv, rv); rv = mEs->mResultHandler->startElement(aPrefix, aLocalName, aNsID); delete this; return rv; }