From 4cbd7a484c5baf77a889cf3e16fd9c3110e77427 Mon Sep 17 00:00:00 2001 From: "rginda%netscape.com" Date: Fri, 30 Nov 2001 08:29:08 +0000 Subject: [PATCH] bug 112494, "crash in nsAccessibilityService::CreateIFrameAccessible", r=jgaunt, sr=shaver sanity check the parameter and return an error code if something isn't right, instead of crashing. git-svn-id: svn://10.0.0.236/trunk@109348 18797224-902f-48f8-a5cc-f745e15eee43 --- .../src/base/nsAccessibilityService.cpp | 17 ++++++++++++++--- .../accessible/src/nsAccessibilityService.cpp | 17 ++++++++++++++--- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/mozilla/accessible/src/base/nsAccessibilityService.cpp b/mozilla/accessible/src/base/nsAccessibilityService.cpp index 4a584e5b7f6..ab275dd9dcd 100644 --- a/mozilla/accessible/src/base/nsAccessibilityService.cpp +++ b/mozilla/accessible/src/base/nsAccessibilityService.cpp @@ -666,19 +666,30 @@ nsAccessibilityService::CreateHTMLBlockAccessible(nsIDOMNode* aDOMNode, nsISuppo NS_IMETHODIMP nsAccessibilityService::CreateIFrameAccessible(nsIDOMNode* aDOMNode, nsIAccessible **_retval) { + NS_ENSURE_ARG_POINTER(aDOMNode); + *_retval = nsnull; nsCOMPtr content(do_QueryInterface(aDOMNode)); - NS_ASSERTION(content,"Error non nsIContent passed to accessible factory!!!"); + if (!content) + return NS_ERROR_FAILURE; nsCOMPtr outerWeakShell; GetShellFromNode(aDOMNode, getter_AddRefs(outerWeakShell)); nsCOMPtr outerPresShell(do_QueryReferent(outerWeakShell)); + if (NS_WARN_IF_FALSE(outerPresShell, + "No outer pres shell in CreateHTMLIFrameAccessible!")) { + return NS_ERROR_FAILURE; + } + nsCOMPtr outerPresContext; outerPresShell->GetPresContext(getter_AddRefs(outerPresContext)); - NS_ASSERTION(outerPresContext,"No outer pres context in CreateHTMLIFrameAccessible!"); - + if (NS_WARN_IF_FALSE(outerPresContext, + "No outer pres context in CreateHTMLIFrameAccessible!")) { + return NS_ERROR_FAILURE; + } + nsCOMPtr doc; if (NS_SUCCEEDED(content->GetDocument(*getter_AddRefs(doc))) && doc) { if (outerPresShell) { diff --git a/mozilla/accessible/src/nsAccessibilityService.cpp b/mozilla/accessible/src/nsAccessibilityService.cpp index 4a584e5b7f6..ab275dd9dcd 100644 --- a/mozilla/accessible/src/nsAccessibilityService.cpp +++ b/mozilla/accessible/src/nsAccessibilityService.cpp @@ -666,19 +666,30 @@ nsAccessibilityService::CreateHTMLBlockAccessible(nsIDOMNode* aDOMNode, nsISuppo NS_IMETHODIMP nsAccessibilityService::CreateIFrameAccessible(nsIDOMNode* aDOMNode, nsIAccessible **_retval) { + NS_ENSURE_ARG_POINTER(aDOMNode); + *_retval = nsnull; nsCOMPtr content(do_QueryInterface(aDOMNode)); - NS_ASSERTION(content,"Error non nsIContent passed to accessible factory!!!"); + if (!content) + return NS_ERROR_FAILURE; nsCOMPtr outerWeakShell; GetShellFromNode(aDOMNode, getter_AddRefs(outerWeakShell)); nsCOMPtr outerPresShell(do_QueryReferent(outerWeakShell)); + if (NS_WARN_IF_FALSE(outerPresShell, + "No outer pres shell in CreateHTMLIFrameAccessible!")) { + return NS_ERROR_FAILURE; + } + nsCOMPtr outerPresContext; outerPresShell->GetPresContext(getter_AddRefs(outerPresContext)); - NS_ASSERTION(outerPresContext,"No outer pres context in CreateHTMLIFrameAccessible!"); - + if (NS_WARN_IF_FALSE(outerPresContext, + "No outer pres context in CreateHTMLIFrameAccessible!")) { + return NS_ERROR_FAILURE; + } + nsCOMPtr doc; if (NS_SUCCEEDED(content->GetDocument(*getter_AddRefs(doc))) && doc) { if (outerPresShell) {