diff --git a/content/html/content/src/nsHTMLOptionElement.cpp b/content/html/content/src/nsHTMLOptionElement.cpp
index ec7e09716f74..065a6f7208ae 100644
--- a/content/html/content/src/nsHTMLOptionElement.cpp
+++ b/content/html/content/src/nsHTMLOptionElement.cpp
@@ -95,8 +95,10 @@ protected:
nsresult GetPrimaryFrame(nsIFormControlFrame *&aFormControlFrame,
PRBool aFlushNotifications = PR_TRUE);
- // Get the select content element that contains this option
- nsresult GetSelect(nsIDOMHTMLSelectElement *&aSelectElement);
+ // Get the select content element that contains this option, this
+ // intentionally does not return nsresult, all we care about is if
+ // there's a select associated with this option or not.
+ void GetSelect(nsIDOMHTMLSelectElement *&aSelectElement);
};
nsresult
@@ -193,6 +195,9 @@ nsHTMLOptionElement::CloneNode(PRBool aDeep, nsIDOMNode** aReturn)
NS_IMETHODIMP
nsHTMLOptionElement::GetForm(nsIDOMHTMLFormElement** aForm)
{
+ NS_ENSURE_ARG_POINTER(aForm);
+ *aForm = nsnull;
+
nsCOMPtr selectElement;
GetSelect(*getter_AddRefs(selectElement));
@@ -270,7 +275,7 @@ nsHTMLOptionElement::SetSelected(PRBool aValue)
// Note: The select content obj maintains all the PresState
// so defer to it to get the answer
nsCOMPtr parentNode;
- result = NS_ERROR_FAILURE;
+ result = NS_OK;
GetParentNode(getter_AddRefs(parentNode));
@@ -597,7 +602,9 @@ nsHTMLOptionElement::GetPrimaryFrame(nsIFormControlFrame *&aIFormControlFrame,
{
nsCOMPtr selectElement;
- nsresult res = GetSelect(*getter_AddRefs(selectElement));
+ nsresult res = NS_ERROR_FAILURE; // This should be NS_OK;
+
+ GetSelect(*getter_AddRefs(selectElement));
if (selectElement) {
nsCOMPtr selectContent(do_QueryInterface(selectElement));
@@ -613,7 +620,7 @@ nsHTMLOptionElement::GetPrimaryFrame(nsIFormControlFrame *&aIFormControlFrame,
}
// Get the select content element that contains this option
-nsresult
+void
nsHTMLOptionElement::GetSelect(nsIDOMHTMLSelectElement *&aSelectElement)
{
aSelectElement = nsnull;
@@ -621,11 +628,10 @@ nsHTMLOptionElement::GetSelect(nsIDOMHTMLSelectElement *&aSelectElement)
// Get the containing element (Either a select or an optGroup)
nsCOMPtr parentNode;
- nsresult res = NS_ERROR_FAILURE;
-
GetParentNode(getter_AddRefs(parentNode));
if (parentNode) {
+ nsresult res;
res = parentNode->QueryInterface(NS_GET_IID(nsIDOMHTMLSelectElement),
(void**)&aSelectElement);
@@ -647,13 +653,11 @@ nsHTMLOptionElement::GetSelect(nsIDOMHTMLSelectElement *&aSelectElement)
}
if (parentNode) {
- res = parentNode->QueryInterface(NS_GET_IID(nsIDOMHTMLSelectElement),
- (void**)&aSelectElement);
+ parentNode->QueryInterface(NS_GET_IID(nsIDOMHTMLSelectElement),
+ (void**)&aSelectElement);
}
}
}
-
- return res;
}
NS_IMETHODIMP
diff --git a/content/html/content/src/nsHTMLTableCellElement.cpp b/content/html/content/src/nsHTMLTableCellElement.cpp
index 8c375a5be2f7..8e9a1572679f 100644
--- a/content/html/content/src/nsHTMLTableCellElement.cpp
+++ b/content/html/content/src/nsHTMLTableCellElement.cpp
@@ -77,7 +77,9 @@ public:
NS_IMETHOD SizeOf(nsISizeOfHandler* aSizer, PRUint32* aResult) const;
protected:
- nsresult GetRow(nsIDOMHTMLTableRowElement** aRow);
+ // This does not retunr a nsresult since all we care about is if we
+ // found the row element that this cell is in or not.
+ void GetRow(nsIDOMHTMLTableRowElement** aRow);
PRInt32 mColIndex;
};
@@ -171,14 +173,18 @@ NS_METHOD nsHTMLTableCellElement::SetColIndex (PRInt32 aColIndex)
}
// protected method
-nsresult
+void
nsHTMLTableCellElement::GetRow(nsIDOMHTMLTableRowElement** aRow)
{
- nsIDOMNode *rowNode;
- GetParentNode(&rowNode);
- nsresult result = rowNode->QueryInterface(NS_GET_IID(nsIDOMHTMLTableRowElement), (void**)aRow);
- NS_RELEASE(rowNode);
- return result;
+ *aRow = nsnull;
+
+ nsCOMPtr rowNode;
+ GetParentNode(getter_AddRefs(rowNode));
+
+ if (rowNode) {
+ rowNode->QueryInterface(NS_GET_IID(nsIDOMHTMLTableRowElement),
+ (void**)aRow);
+ }
}
NS_IMETHODIMP
@@ -190,10 +196,18 @@ nsHTMLTableCellElement::GetCellIndex(PRInt32* aCellIndex)
GetRow(getter_AddRefs(row));
+ if (!row) {
+ return NS_OK;
+ }
+
nsCOMPtr cells;
row->GetCells(getter_AddRefs(cells));
+ if (!cells) {
+ return NS_OK;
+ }
+
PRUint32 numCells;
cells->GetLength(&numCells);
@@ -227,10 +241,18 @@ nsHTMLTableCellElement::SetCellIndex(PRInt32 aCellIndex)
GetRow(getter_AddRefs(row));
+ if (!row) {
+ return NS_OK;
+ }
+
nsCOMPtr cells;
row->GetCells(getter_AddRefs(cells));
+ if (!cells) {
+ return NS_OK;
+ }
+
PRUint32 numCellsU;
cells->GetLength(&numCellsU);
diff --git a/layout/html/content/src/nsHTMLOptionElement.cpp b/layout/html/content/src/nsHTMLOptionElement.cpp
index ec7e09716f74..065a6f7208ae 100644
--- a/layout/html/content/src/nsHTMLOptionElement.cpp
+++ b/layout/html/content/src/nsHTMLOptionElement.cpp
@@ -95,8 +95,10 @@ protected:
nsresult GetPrimaryFrame(nsIFormControlFrame *&aFormControlFrame,
PRBool aFlushNotifications = PR_TRUE);
- // Get the select content element that contains this option
- nsresult GetSelect(nsIDOMHTMLSelectElement *&aSelectElement);
+ // Get the select content element that contains this option, this
+ // intentionally does not return nsresult, all we care about is if
+ // there's a select associated with this option or not.
+ void GetSelect(nsIDOMHTMLSelectElement *&aSelectElement);
};
nsresult
@@ -193,6 +195,9 @@ nsHTMLOptionElement::CloneNode(PRBool aDeep, nsIDOMNode** aReturn)
NS_IMETHODIMP
nsHTMLOptionElement::GetForm(nsIDOMHTMLFormElement** aForm)
{
+ NS_ENSURE_ARG_POINTER(aForm);
+ *aForm = nsnull;
+
nsCOMPtr selectElement;
GetSelect(*getter_AddRefs(selectElement));
@@ -270,7 +275,7 @@ nsHTMLOptionElement::SetSelected(PRBool aValue)
// Note: The select content obj maintains all the PresState
// so defer to it to get the answer
nsCOMPtr parentNode;
- result = NS_ERROR_FAILURE;
+ result = NS_OK;
GetParentNode(getter_AddRefs(parentNode));
@@ -597,7 +602,9 @@ nsHTMLOptionElement::GetPrimaryFrame(nsIFormControlFrame *&aIFormControlFrame,
{
nsCOMPtr selectElement;
- nsresult res = GetSelect(*getter_AddRefs(selectElement));
+ nsresult res = NS_ERROR_FAILURE; // This should be NS_OK;
+
+ GetSelect(*getter_AddRefs(selectElement));
if (selectElement) {
nsCOMPtr selectContent(do_QueryInterface(selectElement));
@@ -613,7 +620,7 @@ nsHTMLOptionElement::GetPrimaryFrame(nsIFormControlFrame *&aIFormControlFrame,
}
// Get the select content element that contains this option
-nsresult
+void
nsHTMLOptionElement::GetSelect(nsIDOMHTMLSelectElement *&aSelectElement)
{
aSelectElement = nsnull;
@@ -621,11 +628,10 @@ nsHTMLOptionElement::GetSelect(nsIDOMHTMLSelectElement *&aSelectElement)
// Get the containing element (Either a select or an optGroup)
nsCOMPtr parentNode;
- nsresult res = NS_ERROR_FAILURE;
-
GetParentNode(getter_AddRefs(parentNode));
if (parentNode) {
+ nsresult res;
res = parentNode->QueryInterface(NS_GET_IID(nsIDOMHTMLSelectElement),
(void**)&aSelectElement);
@@ -647,13 +653,11 @@ nsHTMLOptionElement::GetSelect(nsIDOMHTMLSelectElement *&aSelectElement)
}
if (parentNode) {
- res = parentNode->QueryInterface(NS_GET_IID(nsIDOMHTMLSelectElement),
- (void**)&aSelectElement);
+ parentNode->QueryInterface(NS_GET_IID(nsIDOMHTMLSelectElement),
+ (void**)&aSelectElement);
}
}
}
-
- return res;
}
NS_IMETHODIMP
diff --git a/layout/html/content/src/nsHTMLTableCellElement.cpp b/layout/html/content/src/nsHTMLTableCellElement.cpp
index 8c375a5be2f7..8e9a1572679f 100644
--- a/layout/html/content/src/nsHTMLTableCellElement.cpp
+++ b/layout/html/content/src/nsHTMLTableCellElement.cpp
@@ -77,7 +77,9 @@ public:
NS_IMETHOD SizeOf(nsISizeOfHandler* aSizer, PRUint32* aResult) const;
protected:
- nsresult GetRow(nsIDOMHTMLTableRowElement** aRow);
+ // This does not retunr a nsresult since all we care about is if we
+ // found the row element that this cell is in or not.
+ void GetRow(nsIDOMHTMLTableRowElement** aRow);
PRInt32 mColIndex;
};
@@ -171,14 +173,18 @@ NS_METHOD nsHTMLTableCellElement::SetColIndex (PRInt32 aColIndex)
}
// protected method
-nsresult
+void
nsHTMLTableCellElement::GetRow(nsIDOMHTMLTableRowElement** aRow)
{
- nsIDOMNode *rowNode;
- GetParentNode(&rowNode);
- nsresult result = rowNode->QueryInterface(NS_GET_IID(nsIDOMHTMLTableRowElement), (void**)aRow);
- NS_RELEASE(rowNode);
- return result;
+ *aRow = nsnull;
+
+ nsCOMPtr rowNode;
+ GetParentNode(getter_AddRefs(rowNode));
+
+ if (rowNode) {
+ rowNode->QueryInterface(NS_GET_IID(nsIDOMHTMLTableRowElement),
+ (void**)aRow);
+ }
}
NS_IMETHODIMP
@@ -190,10 +196,18 @@ nsHTMLTableCellElement::GetCellIndex(PRInt32* aCellIndex)
GetRow(getter_AddRefs(row));
+ if (!row) {
+ return NS_OK;
+ }
+
nsCOMPtr cells;
row->GetCells(getter_AddRefs(cells));
+ if (!cells) {
+ return NS_OK;
+ }
+
PRUint32 numCells;
cells->GetLength(&numCells);
@@ -227,10 +241,18 @@ nsHTMLTableCellElement::SetCellIndex(PRInt32 aCellIndex)
GetRow(getter_AddRefs(row));
+ if (!row) {
+ return NS_OK;
+ }
+
nsCOMPtr cells;
row->GetCells(getter_AddRefs(cells));
+ if (!cells) {
+ return NS_OK;
+ }
+
PRUint32 numCellsU;
cells->GetLength(&numCellsU);