diff --git a/mozilla/content/html/content/src/nsHTMLFormElement.cpp b/mozilla/content/html/content/src/nsHTMLFormElement.cpp
index e3602495db8..4f2d61d6957 100644
--- a/mozilla/content/html/content/src/nsHTMLFormElement.cpp
+++ b/mozilla/content/html/content/src/nsHTMLFormElement.cpp
@@ -755,6 +755,11 @@ nsHTMLFormElement::DoSubmit(nsIPresContext* aPresContext, nsEvent* aEvent)
nsCOMPtr webProgress = do_GetInterface(docShell);
NS_ASSERTION(webProgress, "nsIDocShell not converted to nsIWebProgress!");
rv = webProgress->AddProgressListener(this);
+ NS_ENSURE_SUBMIT_SUCCESS(rv);
+ }
+ else {
+ // in case we didn't do anything, reset mIsSubmitting
+ mIsSubmitting = PR_FALSE;
}
return rv;
diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp
index de48e2d1c6e..a53828896a7 100644
--- a/mozilla/docshell/base/nsDocShell.cpp
+++ b/mozilla/docshell/base/nsDocShell.cpp
@@ -5132,12 +5132,17 @@ nsDocShell::ScrollIfAnchor(nsIURI * aURI, PRBool * aWasAnchor, PRUint32 aLoadTyp
newSpec.BeginReading(urlStart);
newSpec.EndReading(refEnd);
+ // hasAnchor is used to check if the new URI really has anchor
+ // We can't always scroll, it would break submitting a form that has
+ // same target page.
+ PRBool hasAnchor = PR_FALSE;
PRInt32 hashNew = newSpec.FindChar(kHash);
if (hashNew == 0) {
return NS_OK; // Strange URI
}
else if (hashNew > 0) {
// found it
+ hasAnchor = PR_TRUE;
urlEnd = urlStart;
urlEnd.advance(hashNew);
@@ -5254,7 +5259,8 @@ nsDocShell::ScrollIfAnchor(nsIURI * aURI, PRBool * aWasAnchor, PRUint32 aLoadTyp
}
}
else {
- *aWasAnchor = PR_TRUE;
+ // Tell there was an anchor only if there really was one (bug 135679)
+ *aWasAnchor = hasAnchor;
}
return NS_OK;